java - 活动重新开始时秒表重置
问题描述
我正在尝试为我的统计活动创建简单的秒表。它需要做的是在活动第一次创建时开始,然后计数直到我重置它。我使用的代码:
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 开始计数。经过几次重置后,它会继续从基本时间开始计数。我能以某种方式摆脱这个问题吗?可能通过课堂或其他方式。
解决方案
谢谢,我通过制作 StopwatchService 解决了我的问题:
public class StopwatchService extends Service {
Handler Handler;
long start_time;
static String trip_time;
static long millis;
@Override
public void onCreate() {
super.onCreate();
Handler = new Handler();
Handler.postDelayed(Runnable, 10L);
start_time = System.currentTimeMillis();
}
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);
}
};
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
public static String getTrip_time(){return trip_time;}
}
在清单中:
<service
android:name=".StopwatchService"
android:enabled="true"/>
在活动中:
startService(new Intent(this, StopwatchService.class));
String trip_time = StopwatchService.getTrip_time();
推荐阅读
- python - 当试图可视化由 numpy.meshgrid() 生成的“常规”网格点时,我看到了白色的垂直线。为什么会这样?
- python - 我需要选择一个 div 标签,它有一个带有 beautifulsoup 的特定子标签
- php - 检查字符串是否没有 6 位数字
- smarty - Smarty 中的 Foreach
- reactjs - 如何在酶和玩笑中使用模拟功能模拟点击事件?
- wordpress - Wordpress 在删除帖子后引用了错误的链接
- react-native - 尝试获取导航参考时反应本机博览会崩溃
- python - 如何全局使用python中的对象?
- javascript - 如何使组件仅对少数响应的用户可见/可用?
- c# - .Net Core 2 EF核心连接字符串问题