2013-09-26 31 views
0

我正在用遠程設備執行一些IO操作,它很快就會向我發送更新(例如每秒60次)。我通過InputStream對象獲取數據。在InputStream.read()不太可能發生的情況下,我需要檢測這個來修復塊(嘗試重置連接等)。每次我發出一個read()調用時,我都需要一個並行的超時,在調用方法之前會等待一段時間。快速安排和取消Android中的定時任務

似乎有很多方法在Android/Java中執行定時任務執行。定時器,線程,執行器等。特別考慮計劃任務分配和取消的速度,最有效的方法是什麼?

回答

0

處理程序也專門用於調度延遲任務。您可以使用輕鬆地安排任務:

private void scheduleButAlsoReschedule(final View v){ 
      v.getHandler().removeCallbacksAndMessages(null); 
      v.getHandler().postDelayed(new Runnable(){ 

       @Override 
       public void run() { 
       // do something here, Note: this is UI-thread 
       }}, DISMISS_DELAY); 
     } 

v.getHandler().removeCallbacksAndMessages(null);

刪除任何回調或當前在隊列中的消息。您還可以指定從隊列中刪除哪個Runnable。

+0

感謝您的回答。你有什麼評論,這與我列出的其他一些方法相比如何?看起來像一個帶有運行Looper的線程的Handler有點「空洞」(這很好,因爲希望這可以轉化爲更好的性能,而不是使用更抽象的Executor可能創建/銷燬線程的東西,等等) – Prismatic