0

我有一个活动,我想跟踪两个动作之间经过的时间(例如 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 必须为用户做广告。

这是我在前台运行我的应用程序时继续接收消息并避免过度耗电的解决方案。

在此处阅读有关 de lifeCycle 的信息:

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

我希望这会很有用。

于 2012-11-15T16:01:18.747 回答
1

您可以创建一个服务或创建一个运行计时器的线程。当您关闭应用程序时,这不会破坏您的计时器。

我希望这有帮助。

于 2012-11-15T15:54:41.573 回答