我有一個異步任務,用於連接到網站(Twitter)。在某些情況下(例如,Twitter發佈更新失敗時),我想等10秒鐘後再嘗試。由於我已經在異步任務中,我不想爲計時器啓動另一個線程。如何在不創建另一個線程的情況下在AsyncTask中放置一個計時器?
任何建議將是偉大的:)。下面 代碼...
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
另一個線程真的是最好的方法,但是如果你使用[TimerTask] [1],這個線程非常簡單。 [1]:http://Another%20thread%20really%20would%20be%20the%20best%20way%20to%20do%20this.%20You%20can%20use%20a%20%5BTimerTask%5D%5B1% 5D。 – Phil
我試圖添加更多東西給你的代碼..嘗試,如果它的作品/ .. – ngesh