2012-01-06 15 views
2

私は30分ごとに機能を実行するスレッドを持っていたので、ハンドラと実行可能なスレッド(postdelayed、removemessagesなど)の組み合わせを使用しました。その時間にthread.Iを停止する方法が見つかりませんでした。 Removemessages()とhander.removeCallbacks(Runnableを)しかし、私はTimerTaskの代わりThreadを使用するためにあなたを提案します。..Androidでスレッドを停止するには?

+1

これはバッテリーに優しいコードのようには見えません。 AlarmManagerを使用して繰り返しアラームをスケジュールし、機能の実行をトリガーすることを検討することをお勧めします。 – THelper

+0

30分間隔でタイマーイベントを使用していますか? –

答えて

3

を助けることができませんでした。ここでキャンセルすることができます& TimerTaskを再起動します。

+0

ありがとうNik、それはあなたに役立つ場合はそれを受け入れてください。他の人にとっても役に立ちます。 – Android

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); 

利用タイマ....それは私はあなたがalarmmanagerを使用することをお勧めあなたの問題

1

を解決します。 timertaskに問題があります。 timertaskが開始されたサービスが破棄されることがあります。サービスが実行されていない場合、timertaskも無効になります。デバイスがアイドル状態になると頻繁に発生します。したがって、最善の解決策は、デバイスがアイドル状態にあるかどうかにかかわらず30分ごとにアラームをトリガーするalarmmanagerを使用することです。アプリケーションを最初に起動したときにアラームを開始するだけで、デバイスの再起動時に再起動する必要があります。デバイスが再起動されると、ブロードキャストレシーバーを使用してメッセージを取得できます。

関連する問題