Android onSaveInstanceState不起作用(对我来说)

时间:2010-08-25 16:36:53

标签: android variables

我有一个像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力关闭。 知道我做错了什么吗? 非常感谢你。

2 个答案:

答案 0 :(得分:0)

你并不是真的采用Android方式:-)不要杀了你的应用程序,而是回到家里。在这种情况下,将调用saveinstancestate。

答案 1 :(得分:0)

如果您在问题中添加了更多详细信息,那将会有所帮助:

“它不起作用” - >它到底是怎么回事? savedInstanceState是空的吗?是通过例外吗?
“app force关闭” - >你能提供引发的确切异常,还是崩溃周围的logcat文本?

话虽如此,saving persistant state上的这一部分文档可能会有所帮助。在onPause和onSavedInstanceState中保存状态有两种不同的时间。 onPause是更可靠的,因为它被称为活动生命周期的一部分。

如果保存在onSaveInstanceState中,则应在onCreate中重新创建。但是,正如Sebi指出的那样,你杀死应用程序的方式可能会阻止onSaveInstanceState被调用。

如果您想结束活动,只需致电完成()。