android - 如何在不创建另一个线程的情况下将计时器放入 AsyncTask 中?

标签 android android-asynctask

我有一个用于连接网站 (Twitter) 的异步任务。在某些情况下(例如,当 Twitter 帖子更新失败时)我想等待 10 秒钟再试一次。因为我已经在执行异步任务,所以我不想为计时器启动另一个线程。

任何建议都会很棒 :)。 下面的代码...

        class SendTwitAsyncTask extends AsyncTask<String, Void, Void> {

    @Override
    protected Void doInBackground(String... params) {



        String tokenTwit = params[0];
        String tokenSecretTwit = params[1];
        String strMessageBody = params[2];

        AccessToken aToken = new AccessToken(tokenTwit, tokenSecretTwit);



        // initialize Twitter4J
        Twitter twitter = new TwitterFactory().getInstance();
        twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
        twitter.setOAuthAccessToken(aToken);
        aToken=null;

        // create a tweet
        Date d = new Date(System.currentTimeMillis());
        String tweet = strMessageBody;

        try {

        status = twitter.updateStatus(tweet);


        // feedback for the user..
        showNotification("Twitter", TWIT_SUCCESS);  

    } catch (TwitterException te) {



        showNotification("Twitter ", TWIT_FAIL);
        te.printStackTrace();

                       //TO DO
                       //POSTING TWEET HAS FAILED.  TRY AGAIN IN 10 SECONDS


    }

        return null;
    }



} //end class SendTwitAsyncTask

最佳答案

有很多方法可以做到这一点。在你的情况下,我可能会选择 Handler.postDelayed。

在与 AsyncTask 相同的范围内创建一个标记为 final 的 Handler 对象

final Handler handler = new Handler();

然后在必要时从 AsyncTask 内部调用 postDelayed 来安排下一次运行:

    handler.postDelayed(new Runnable() {

        public void run() {
            new SmartTwitAsyncTask.execute(param);
        }
    }, 10000);

关于android - 如何在不创建另一个线程的情况下将计时器放入 AsyncTask 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6921351/

相关文章:

java - 应用程序崩溃而无法执行 AsyncTask

java - onPostExecute 在 fragment Activity 中不起作用

android - 在 aChartEngine 中对 XYSeries 使用 remove(int index) 函数

android - MotionLayout 中的 KeyAttribute 在 View "visibility"更改时被忽略

java - 无法将对象上传到 Firebase 实时数据库

Android使用 Intent 从 Activity 中打开 fragment

android - 如何在 android 中执行并行 REST API 调用

android - 为什么我们应该使用 aysntask 或 service 而不是新线程

android - Google Places API 总是返回错误

android - ActionBarSherlock - android.support.v4.app.Fragment 类型无法解析。它是从所需的 .class 文件中间接引用的