2

私はかなり長い間iOSアプリを開発してきましたが、今はandroidに切り替えました。ビューが表示されたときにタイマーを開始し(Androidではハンドラーを使用する必要があります)(onResume)、ビューが消えたときにタイマーを無効にする(onPause)という要件があります。実行可能なハンドラーを作成することはできますが、停止することはできません。私のコードは次のとおりです。

     protected void AutoRefresh() {
     try{
handler.postDelayed(new Runnable() {
                     public void run() { 
                          new LongOperation().execute("");
                         }
                         AutoRefresh();

                 }, 60000);
    }
        catch(Exception ex){

        }

}

さて、ビューが消えたときにこのハンドラスレッドを停止するにはどうすればよいですか?Androidでタイマーを実装する正しい方法ではない場合は、コメントしてください。

4

1 に答える 1

2

ビューが表示されたとき(onResume)、ビューが消えたとき(onPause)にタイマーを無効にします(ハンドラを停止)。実行可能な Handler を作成できますが、停止できません。

使用する への参照を保持しRunnableます。

private Runnable mRefresh = new Runnable() {
     public void run() { 
          new LongOperation().execute("");
     }
     AutoRefresh();
}
//...
protected void AutoRefresh() {
    handler.postDelayed(mRefresh, 60000);
}

そして、次のonPauseように削除します:

handler.removeCallbacks(mRefresh);

これにより、現在実行中の が削除されないことに注意してくださいRunnable(存在する場合)。そのため、LongOperationonPostExecuteメソッドでActivityは、UI を更新する前、または と他の対話を行う前に、 がまだ利用可能かどうかを確認する必要がありますActivity

Androidでタイマーを実装する正しい方法でない場合は、コメントしてください。

特定の時間間隔でアクションを実行する必要があるようですが、 a を使用するのHandlerがその方法です。タイマーは必要なものではないと思います。

于 2013-02-23T09:07:07.607 に答える