final Handler handler = new Handler();
LOG.d("delay");
handler.postDelayed(new Runnable() {
@Override public void run() {
LOG.d("notify!");
//calling some methods here
}
}, 2000);
「延遲」確實顯示在日誌中,但不顯示其他人。並且run()
中調用的方法也不會被調用。任何人都可以幫助解釋爲什麼發生這種情況,我做錯了什麼?handler.postDelayed在IntentService的onHandleIntent方法中不起作用
具有此代碼的類擴展IntentService,這會是一個問題嗎?
============================
更新: 我把這個代碼在擴展IntentService
類。我發現它的唯一工作是在構造函數中。但我需要把它放在onHandleIntent
方法中。所以,我檢查了文檔onHandleIntent
,它說:
該方法被調用的工作線程上的請求process.Only一個意圖在同一時間被處理,但在運行工作線程的處理情況獨立於其他應用程序邏輯。所以,如果這段代碼需要很長時間,它會阻止對同一個IntentService的其他請求,但它不會阻塞其他任何東西。當所有的請求都被處理後,IntentService會自行停止,所以你不應該調用stopSelf。
因此,根據我得到的結果,我覺得我不能在「工作者線程」中使用postDelayed
。但任何人都可以解釋這一點,就像爲什麼這不工作在工作線程?提前致謝。
是'os.Handler'進口? –
@NJ是的。 android.os.Handler – Zip
你從哪裏調用它?需要上下文。 – Nathanael