1

TextViewを更新するCountDownTimerがありますが、戻るボタンを押すと停止します。

CountDownTimer timer = new CountDownTimer(600000, 100) {

    public void onTick(long millisUntilFinished) {
        calendar.setTimeInMillis(millisUntilFinished);

        cron.setText(sf.format(calendar.getTime()));
    }

    public void onFinish() {
    }
};

戻るボタンを押してアクティビティが破棄された場合、どうすれば実行を継続できますか?

PS:タイマーの開始時にGPSサービスも開始しますが、CountDownTimerをサービスに入れる方法はありますか?

4

4 に答える 4

2

あなたのタイマーがあなたのライフサイクルを超えて生きる必要があるならActivity、それはそこに属していません。確かにService、メモリ内に常駐できる別のオブジェクト(シングルトンなど)に配置できます。

于 2012-07-18T16:59:41.040 に答える
1

prashantとDebunwireが指摘したように、サービスを使用する必要があります。startService()バインドする前に必ず呼び出してください。これにより、呼び出し元のアクティビティが破棄されても、サービスは存続します。

stopSelf()また、タイマーが終了し、想定されていることを実行した後、サービスが自動的に停止することも確認してください。

于 2012-07-18T17:15:34.073 に答える
0

カウントダウンタイマーをサービスに入れることは可能だと思います。インテントをサービスに送信することで、タイマーをトリガーして開始できます。また、コールバック、インテント、メッセンジャーなどのメカニズムを使用して、更新時間をUIに中継する必要があります。

于 2012-07-18T16:56:50.287 に答える
0

戻るボタンを上書きして、ホームボタンのように動作させます。このようにして、あなたの活動が破壊されることはありません。とはいえ、これは「良い習慣」とは考えられていません。

私が言っていることをするために、あなたはこれをあなたの活動クラスに置くだけです。

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}

何をするにしても、最適化として、TextViewが画面に表示されていない場合は、TextViewが更新されないようにする必要があります。これにより、バッテリーの寿命を節約し、ガベージコレクションを減らす文字列の作成を防ぐことができます。

于 2012-07-18T17:08:29.473 に答える