我在我的应用程序中制作了一个计时器。但是当我在手机中关闭屏幕一段时间后,我会看看已经过了多少时间并且计时器再次为零。我如何修复它,以便它自己重置?
if(v.getId() == R.id.start){
int stopsecs = 0;
String chronotime = time.getText().toString();
String currenttime[] = chronotime.split(":");
if (currenttime.length == 2) {
stopsecs = Integer.parseInt(currenttime[0]) * 60 * 1000
+ Integer.parseInt(currenttime[1]) * 1000;
} else if (currenttime.length == 3) {
stopsecs = Integer.parseInt(currenttime[0]) * 60 * 60 * 1000
+ Integer.parseInt(currenttime[1]) * 60 * 1000
+ Integer.parseInt(currenttime[2]) * 1000;
}
time.setBase(SystemClock.elapsedRealtime() - stopsecs);
time.start();
}
else if(v.getId() == R.id.stop){
time.stop();
String updatedtime[] = time.getText().toString().split(":");
StringBuilder b = new StringBuilder();
if(updatedtime.length == 2){
b.append("0");
b.append(".");
b.append(updatedtime[0]);
}
else if(updatedtime.length == 3){
b.append(updatedtime[0]);
b.append(".");
b.append(updatedtime[1]);
}
horasch.setText(b.toString());
time.setBase(SystemClock.elapsedRealtime());
}
else if(v.getId() == R.id.pause){
time.stop();
}
答案 0 :(得分:0)
你没有说明time.start()和time.stop()的作用,但我认为它是某种计时器或线程。当您关闭屏幕或使用其他应用程序时,您的活动将暂停并受运行时杀死。所以当你返回它时,onCreate()会再次运行。
重写方法onSaveInstanceState()以在活动的活动生命周期结束时保存计时器的状态(例如,存储是否已启动/已停止,以及基准时间是否在SharedPreferences中)。因此,如果您的应用程序被终止,那么您将获得在重新启动时恢复其状态所需的信息。
重写onRestoreInstanceState()方法,以从存储在SharedPreferences中的数据恢复计时器的状态。请注意,仅当活动被系统杀死时才调用此方法,因为它最后一次可见并且在onCreate()之后运行。