当应用程序关闭时计数的Android计时器

问题描述:

我有一个活动,我想跟踪两个操作之间的时间间隔(对于ex startAction和endAction)。我已经使用下面的代码来实现一个计时器,该计时器增加了500用户按下startAction按钮后MS:当应用程序关闭时计数的Android计时器

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

现在我的问题是,如果我退出应用程序定时器stops.How我可以做,即使当用户退出应用,它运行?总而言之,即使应用程序已关闭,我也需要一个计数器。

+4

您可以保存一个开始时间戳并将其与当前时间戳一起使用来计算已过去的时间。就像这样,即使用户完全关闭应用程序,计时器在重新打开时也会再次运行。 –

+0

如果您希望应用程序在运行时运行,则必须使用在后台运行并且永远不会被系统关闭的服务。 或者,当应用程序即将关闭时,您可以记住日期和时间值,并查看您的应用程序再次启动时的区别。 –

您可以启动Service,即使您的应用程序已关闭,它也会启动并运行。

Here是一个很好的教程。

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

我希望这会有所帮助。

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

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

但是ypu必须在用户销毁应用程序时做广告。

这是我的解决方案来保持接收消息与我的应用程序在前台运行,并避免过度的电力消耗。

阅读关于德生命周期的位置:

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

我希望这是有用的。