A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如果后台的Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态?

点评

注意发帖节奏了!  发表于 2014-6-2 20:49

3 个回复

倒序浏览
这个是安卓的内容吧。
回复 使用道具 举报
使用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判断语句。


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马