我想以前檢查的30秒後,檢查未讀郵件,是指當第一次檢查(AsyncTask
)是完整的和我有結果,那麼我想等待30秒鐘,然後我要檢查再次閱讀未讀消息等。這裏是我的代碼:執行的AsyncTask循環後前一
TimerTask timerTask = new CheckUnreadMessages(menuItem);
Timer timer = new Timer();
timer.schedule(timerTask, Constants.CHECK_UNREAD_COUNT_INTERVAL);
這裏是我的TimerTask
:
class CheckUnreadMessages extends TimerTask{
MenuItem menuItem;
public CheckUnreadMessages(MenuItem menuItem) {
this.menuItem = menuItem;
}
@Override
public void run() {
Log.i("PrivateHome", "Checking for unread message...");
new CheckUnreadMessagesTask(menuItem, PrivateHome.this).execute(LocalDBSP.init().getID(PrivateHome.this));
}
}
這裏去我AsyncTask
:
public class CheckUnreadMessagesTask extends AsyncTask <String, String, Boolean> {
Activity activity;
JSONObject result;
MenuItem menuItem;
public CheckUnreadMessagesTask(MenuItem menuItem, Activity activity){
this.menuItem = menuItem;
this.activity = activity;
}
@Override
protected Boolean doInBackground(String... params) {
try {
//now update to server
result = getResponse(URLManager.getUnreadCount(params[0]));
return JSONHelper.isResultOK(result);
}catch (Exception e){
e.printStackTrace();
}
return false;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Boolean resultOK) {
super.onPostExecute(resultOK);
if(resultOK){
try {
String count = result.getString(JSONKeys.RESULT);
menuItem.setTitle(Constants.NAV_SEE_MESSAGES_TITLE+" ("+count+")");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
但它正在爲只在第一次執行時,它不會重複。
缺少相關代碼。 'CheckUnreadMessagesTask.execute()'做了什麼?這部分實際上需要在一個定時器中重新調度自己,否則沒有東西會執行這部分。此外,你應該共享一個計時器,而不是每次都創建一個新計時器。 –
更新了我的問題,請告訴我該怎麼做。 –
您的代碼中沒有任何內容表明您的任務應該重複。 – njzk2