首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓onSaveInstance状态不起作用(对我来说)

安卓onSaveInstance状态不起作用(对我来说)
EN

Stack Overflow用户
提问于 2010-08-26 00:36:53
回答 2查看 1.9K关注 0票数 1

我有一个类似于快板的应用程序,其中我使用一个变量i每毫秒执行一次i++ (我需要毫秒来显示每秒的帧,而时钟每秒只更新一次),然后我以HH:MM:SS:FF的格式显示它。我还有一个退出按钮

代码语言:javascript
运行
复制
if (item.getTitle() == "Quit") {
Process.killProcess(id);
}

问题是,当我按下quit时,我希望应用程序记住i的值,这样如果我再次启动计时器,计时器将在退出之前的同一时间点启动。我试过了

代码语言:javascript
运行
复制
public void onSaveInstanceState(Bundle outState) {
outState.putLong(MILLISECONDS, i);
super.onSaveInstanceState(outState);
}

然后调用它

代码语言:javascript
运行
复制
public void onStart(Bundle savedInstanceState) {
super.onStart();
i = savedInstanceState.getLong(MILLISECONDS);
}

代码语言:javascript
运行
复制
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
i = savedInstanceState.getLong(MILLISECONDS);
}

但它不起作用。另外,如果我选择

代码语言:javascript
运行
复制
onCreate(Bundle savedInstanceState) {

...

i = savedInstanceState.getLong(MILLISECONDS);

...

}

应用程序强制关闭。你知道我做错了什么吗?非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2010-08-26 00:40:55

你并不是真的在用Android的方式来做这件事:-)不要杀了你的应用,而是回家去。在这种情况下,将调用saveinstancesta.

票数 0
EN

Stack Overflow用户

发布于 2010-08-26 00:53:44

如果你在你的问题中添加更多的细节将会有所帮助:

“它不工作”->它到底是怎么不工作的?savedInstanceState是空的吗?它是否通过异常?

“应用程序强制关闭”->你能提供抛出的确切异常,或者关于崩溃的日志文本吗?

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

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

如果您想结束您的活动,只需调用finish()即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3568227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档