黑马程序员技术交流社区

标题: 如果后台的Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态? [打印本页]

作者: 博€$€海    时间: 2014-6-2 20:27
标题: 如果后台的Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态?
如果后台的Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态?
作者: 小周务商    时间: 2014-6-2 23:02
这个是安卓的内容吧。
作者: BigKarel    时间: 2014-6-3 19:00
使用onSaveInstanceState()方法保存Activity当前的状态。
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); outState.putLong(“id”, value);}

如果细心的话你会发现当OnCreate()创建一个Activity时会向Oncreate()方法中传入savedInstanceState参数,
protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                if(savedInstanceState != null){//重新启动时会进行判断
                long id = savedInstanceState.getLong(“id”);
}}

这个参数的作用就是,当你的Activity被覆盖或者被迫关闭了,你又重新打开这个Activity时就会重新调用OnCreate()方法,不同的是这时传入的savedInstanceState参数有具体的意义了,它里面就保存了系统回收之前Activity的状态。

我们由onSaveInstanceState()方法,可知道savedInstanceState为Bundle对象,其实我们有其中的id就能理解到其实系统把状态都保存到id了,需要恢复时重新读取就行了。OnCreate只有在重新调用时才会执行其中的if判断语句。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2