0

2つのアクション(例:startActionとendAction)の間の経過時間を追跡したいアクティビティがあります。次のコードを使用して、ユーザーがstartActionのボタンを押してから500ミリ秒ごとに増分するタイマーを実装しました。

TextView dayTimer = (TextView)findViewById(R.id.tvDayTimer);
long startTime;
class DayTimer extends TimerTask {

             @Override
             public void run() {
                 BBCAndroid.this.runOnUiThread(new Runnable() {


                     public void run() {
                        long millis = SystemClock.elapsedRealtime() - startTime;
                        int seconds = (int) (millis / 1000);
                        int minutes = seconds / 60;
                        seconds     = seconds % 60;

                        dayTimer.setText(String.format("%d:%02d", minutes, seconds));
                     }
                 });
             }
        };


      startDayButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub

                            startTime = SystemClock.elapsedRealtime();
                        timer.schedule(new DayTimer(),  0,500);
                        LoginResult.DayState = 1;
                        startDayButton.setEnabled(false);
                        endDayButton.setEnabled(true);
            }
        });

今私の問題は、アプリケーションを終了するとタイマーが停止することです。ユーザーがアプリを使用していないときでもタイマーを実行するにはどうすればよいですか?要約すると、アプリが閉じていてもカウントするタイマーが必要です。

4

3 に答える 3

2

サービスを開始すると、アプリケーションを閉じてもサービスが稼働します。

これが良いチュートリアルです。

于 2012-11-15T15:56:53.207 に答える
1

ライフサイクルを使用して問題を解決しました。

アプリケーションが破棄されていない場合は、コードをonPauseまたはonStopに適用することで時間をカウントできます。

ただし、ypuは、ユーザーがアプリを破棄するときにユーザーをアドバタイズする必要があります。

これは、アプリがフォアグラウンドで実行されているときにメッセージの受信を継続し、過度の電力消費を回避するための私のソリューションでした。

ここでdelifeCycleについて読んでください:

http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

これがお役に立てば幸いです。

于 2012-11-15T16:01:18.747 に答える
1

サービスを作成することも、タイマーを実行するスレッドを作成することもできます。これにより、アプリが閉じられたときにタイマーが破壊されることはありません。

これがお役に立てば幸いです。

于 2012-11-15T15:54:41.573 に答える