我有一项活动,其中我想跟踪两个动作之间经过的时间(对于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);
}
});
现在我的问题是,如果我退出应用程序,计时器停止。即使用户不在应用程序中,我怎样才能运行它? 总而言之,即使应用程序已关闭,我也需要一个计时器。
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以创建Service或创建计时器运行的线程。当应用关闭时,这不会破坏您的计时器。
我希望这会有所帮助。
答案 2 :(得分:1)
我使用生命周期解决了你的问题。
如果应用程序未被销毁,您可以通过将代码应用到onPause或onStop来计算时间。
但是当他要破坏应用程序时,ypu必须通告用户。
这是我的解决方案,用于在我的应用程序在前台运行时继续接收消息并避免过度耗电。
在这里阅读de lifeCycle:
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
我希望这可能有用。