我有一个像clapperboard一样的应用程序,其中我每隔毫秒使用一个变量i ++(我需要毫秒来显示每秒帧数,而计时器每秒只更新一次),然后我将其显示在格式HH:MM:SS:FF。我也有一个退出按钮
if (item.getTitle() == "Quit") {
Process.killProcess(id);
}
问题在于我希望应用程序在按下退出时记住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);
...
}
app力关闭。 知道我做错了什么吗? 非常感谢你。
答案 0 :(得分:0)
你并不是真的采用Android方式:-)不要杀了你的应用程序,而是回到家里。在这种情况下,将调用saveinstancestate。
答案 1 :(得分:0)
如果您在问题中添加了更多详细信息,那将会有所帮助:
“它不起作用” - >它到底是怎么回事? savedInstanceState是空的吗?是通过例外吗?
“app force关闭” - >你能提供引发的确切异常,还是崩溃周围的logcat文本?
话虽如此,saving persistant state上的这一部分文档可能会有所帮助。在onPause和onSavedInstanceState中保存状态有两种不同的时间。 onPause是更可靠的,因为它被称为活动生命周期的一部分。
如果保存在onSaveInstanceState中,则应在onCreate中重新创建。但是,正如Sebi指出的那样,你杀死应用程序的方式可能会阻止onSaveInstanceState被调用。
如果您想结束活动,只需致电完成()。