gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:22:17 25 4
gpt4 key购买 nike

我有一个用于连接网站 (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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com