4

毎分、分単位で関数を実行させるタイマーがあります。アクティビティが一時停止されても、タイマーは引き続き実行されます。不要なので実行したくありません。

一時停止時に実行される場合、どうすれば防止できますか?

メル。

onCreate() で私は持っています

//Respond to clock changing every minute, on the minute
    myTimer = new Timer();
    GregorianCalendar calCreationDate = new GregorianCalendar();
    calCreationDate.add(Calendar.MILLISECOND,  (-1*calCreationDate.get(Calendar.MILLISECOND)));
    calCreationDate.add(Calendar.SECOND, -1*calCreationDate.get(Calendar.SECOND));
    calCreationDate.add(Calendar.MINUTE, 1);

    //Update every one minute
    myTimer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            timerMethod();  
        }
    }, calCreationDate.getTime(), 60000);

クラス内 (onCreate() の外側) には次のものがあります。

//Update the clock every minute
protected void timerMethod() {
    this.runOnUiThread(Timer_Tick);
}  //end TimerMethod


private Runnable Timer_Tick = new Runnable() {
    public void run() {
        int intTpHour = tpTimePicker.getCurrentHour();
        int intTpMinute = tpTimePicker.getCurrentMinute();

        displayMyTime(intTpHour, intTpMinute);
    }
};  //end Runnable Timer Tick
4

2 に答える 2

2

その場合、Timerオブジェクトをアクティビティのインスタンス メンバーとして実装し、アクティビティのメソッドで作成して開始し、そのアクティビティonResume()のメソッドで停止する必要がありonPause()ます。そうすれば、アクティビティがフォアグラウンドにある場合にのみ実行されます。

于 2011-08-24T00:55:24.217 に答える
1

ほとんどの状況では、Activity がバックグラウンドにある場合でも、スレッドは引き続き実行されます。システムは、アクティビティとそれに関連するプロセスをいつでも強制終了する権利を留保します。詳細については、開発者ガイドのアクティビティ ライフサイクルの管理を参照してください。

于 2011-08-24T00:53:17.897 に答える