作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用于连接网站 (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/
我是一名优秀的程序员,十分优秀!