应用关闭时计算的Android计时器

时间:2012-11-15 15:52:11

标签: android

我有一项活动,其中我想跟踪两个动作之间经过的时间(对于ex startAction和endAction)。我使用以下代码实现一个计时器,在用户按下按钮后,该计时器将增加500毫秒startAction:

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);
            }
        });

现在我的问题是,如果我退出应用程序,计时器停止。即使用户不在应用程序中,我怎样才能运行它? 总而言之,即使应用程序已关闭,我也需要一个计时器。

3 个答案:

答案 0 :(得分:2)

您可以启动Service,即使您的申请已关闭,它也会启动并运行。

Here是一个很好的教程。

答案 1 :(得分:1)

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

我希望这会有所帮助。

答案 2 :(得分:1)

我使用生命周期解决了你的问题。

如果应用程序未被销毁,您可以通过将代码应用到onPause或onStop来计算时间。

但是当他要破坏应用程序时,ypu必须通告用户。

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

在这里阅读de lifeCycle:

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

我希望这可能有用。