android 文档 关于onSaveInstanceState

最近重新看了下android开发文档,在Activity生命周期这边看到了onSaveInstanceState和onRestoreInstanceState两个函数

文档说 在系统出于自己的原因而不是软件用户行为时,会调用onSaveInstanceState保存当前view的信息,然后调用create时参数saveIInstanceState会被传入参数(此时不为空,而平时create 参数为null)且onResstoreInstanceState会被调用。

在竖屏和行屏切换的时候,EditeText里的文字仍然被保存者,说明系统自身处理了页面信息保存和恢复功能,无需开发者实现。在log里 我看到了onRestoreInstanceState在onStart之后被调用了,且create里的参数也非空。但onSaveInstanceState没有被调用,网上有的说会被调用。

        目前来看,我认为onSaveInstanceState和OnRestoreInstanceState主要时给系统自身使用的,用来在某些特殊情况下,保存和恢复一些view信息。至于用户其他需要额外保存的信息,如果确实需要的话我认为还是放在onPause或者onStop中,恢复可以放在onResuse或者onstart中,这些函数是各种情况下肯定会被调用的。这样操作会更加保险点。

      至于是什么原因导致我在旋转时没有出现调要onSaveInstanceState函数,但实际上view参数得到恢复,我持暂停态度,待后续深入时再详究。-->补充下:我的开发sdk里面 onSaveInstanceState的参数是(Bundle outState,PersistableBudle outPersistentState)这个跟之前大家遇到的只有一个参数不同,网上有个也是用的此参数说是5.0以后新添加的,需要在AndroidMainfest.xml中对应activity中添加android:persistableMode="persistAcrossReboots",且在5.0以上版本测试。

我的测试手机是4.2的所以不能看到调用onSaveInstanceState。在安装Genymotion 6.0虚拟机后终于看到了onSaveInstatnceState被调用.


转载于:https://my.oschina.net/u/2547743/blog/603216

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值