Mel*_*Mel 1 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
Run Code Online (Sandbox Code Playgroud)
有很多方法可以做到这一点.在你的情况下,我可能会使用Handler.postDelayed.
在与AsyncTask相同的范围内创建一个标记为final的Handler对象
final Handler handler = new Handler();
Run Code Online (Sandbox Code Playgroud)
然后从AsyncTask内部调用postDelayed以在必要时安排下一次运行:
handler.postDelayed(new Runnable() {
public void run() {
new SmartTwitAsyncTask.execute(param);
}
}, 10000);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8374 次 |
最近记录: |