我有一个类似于快板的应用程序,其中我使用一个变量i每毫秒执行一次i++ (我需要毫秒来显示每秒的帧,而时钟每秒只更新一次),然后我以HH:MM:SS:FF的格式显示它。我还有一个退出按钮
if (item.getTitle() == "Quit") {
Process.killProcess(id);
}
问题是,当我按下quit时,我希望应用程序记住i的值,这样如果我再次启动计时器,计时器将在退出之前的同一时间点启动。我试过了
public void onSaveInstanceState(Bundle outState) {
outState.putLong(MILLISECONDS, i);
super.onSaveInstanceState(outState);
}
然后调用它
public void onStart(Bundle savedInstanceState) {
super.onStart();
i = savedInstanceState.getLong(MILLISECONDS);
}
和
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
i = savedInstanceState.getLong(MILLISECONDS);
}
但它不起作用。另外,如果我选择
onCreate(Bundle savedInstanceState) {
...
i = savedInstanceState.getLong(MILLISECONDS);
...
}
应用程序强制关闭。你知道我做错了什么吗?非常感谢。
发布于 2010-08-26 00:53:44
如果你在你的问题中添加更多的细节将会有所帮助:
“它不工作”->它到底是怎么不工作的?savedInstanceState是空的吗?它是否通过异常?
“应用程序强制关闭”->你能提供抛出的确切异常,或者关于崩溃的日志文本吗?
话虽如此,关于saving persistant state的这一节文档可能会有所帮助。在onPause和onSavedInstanceState中,有两种不同的保存状态的时间。onPause是更可靠的,因为它被保证作为活动生命周期的一部分来调用。
如果以onSaveInstanceState格式保存,则应在onCreate中重新创建。然而,正如Sebi指出的那样,你杀死应用程序的方式可能会阻止onSaveInstanceState被调用。
如果您想结束您的活动,只需调用finish()即可。
https://stackoverflow.com/questions/3568227
复制相似问题