2012-01-06 109 views
2

我有一個線程每隔30分鐘執行一次函數,所以我使用了處理程序和可運行線程(如postdelayed,removemessages)的組合。當時我找不到任何方法來停止線程。我嘗試了hander。刪除消息()和hander.removeCallbacks(Runnable),但忍不住。如何在Android中停止線程?

+1

這看起來不像電池友好的代碼。您可能需要考慮使用AlarmManager來安排重複警報以觸發您的功能的執行。你使用計時器事件30分鐘的時間間隔是否是 – THelper 2012-01-06 10:38:14

+0

? – 2012-01-06 10:42:13

回答

3

我建議您使用TimerTask而不是Thread。在這裏你可以取消&重啓TimerTask

+0

謝謝Nik,如果對你有用,請接受它。所以它對其他人也很有用。 – Android 2012-01-06 10:39:43

0

要停止java中的線程,您需要調用thread.interrupt();方法。

0
timer = new Timer(); 
    timer.schedule(new TimerTask() { 

     @Override 
     public void run() { 
             if(your condition to stop thread) 
             { 
              timer.cancel(); 
              }else 
             { 
              \\ your code 
              } 
             } 
      }, 0, 1800000); 

使用定時器裏面....這將解決您的問題

1

我建議你使用alarmmanager。時間任務有問題。 有時,啓動時間任務的服務可能會被破壞。如果服務沒有運行,timertask也會被禁用。它在設備處於空閒狀態時經常發生。所以最好的解決方案是使用警報管理器,無論您的設備是否處於閒置狀態,每30分鐘觸發一次警報。您只需在首次啓動應用程序時啓動警報,並在設備重新引導時需要重新啓動警報。您可以使用廣播接收器在設備重啓時收到消息。