我正在尝试为我的统计活动创建简单的秒表。它需要做的是在活动第一次创建时启动,然后不断计数,直到我重置它。我使用的代码是:
String trip_time;
long millis;
long start_time;
Handler Handler;
private boolean started = false;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Handler.postDelayed(Runnable, 10L);
if (!started) {
start_time = System.currentTimeMillis();
started = true;
}
}
private final Runnable Runnable = new Runnable() {
@Override
public void run() {
millis = (System.currentTimeMillis() - start_time);
long seconds = millis / 1000;
trip_time = String.format(Locale.getDefault(), "%02d:%02d:%02d", seconds / 3600, seconds / 60, seconds % 60);
Handler.postDelayed(Runnable, 10L);
}
};
但当我有目的地进行活动时,或活动重新启动秒表重置并从0开始计数。在几次重置后,它将从基本时间继续计数。我能设法解决这个问题吗?可能是通过课堂或其他方式。
2条答案
按热度按时间kgqe7b3p1#
谢谢,我通过秒表服务解决了我的问题:
在舱单中:
在活动中:
wrrgggsh2#
下面的代码每次都会重置秒表,因为当您返回此活动时,它将启动一个新的runnable并在ui上显示。
您需要连接到以前的数据的东西。您可以使用在每次返回此活动时都会绑定的服务,即使您的应用程序已从后台删除。或者,您可以在共享首选项/数据存储上保存上次时间和已用时间,并通过添加总已用时间来启动活动计时器。