Android之activity的数据持久化(persistableMode详解)

Android之activity的数据持久化(persistableMode详解)

链接:http://blog.csdn.net/qq_16628781/article/details/61643150


知识点:

1、重启设备前,持久化你的页面的数据;

2、persistableMode详解;

3、Android知识引导

{

PersistableBundle类:用户持久化保存数据的类

}


persistAcrossReboots ——这个词是记录在我的新名词的文本中的,今天有时间去查了下资料,看看是怎么回事。


然后看到了,这个是用在manifest文件的<activity>节点下的一个属性:android:persistableMode。但是它有什么作用呢?又怎么使用呢?


作用:其实这是对activity的数据持久化需要用到的。


数据持久化?我之前有写过一篇文章说的就是activity的数据状态保存,但并不是数据的持久化。这关系到这两个方法:

public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)
public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState)

有兴趣的朋友可以看看我的这篇文章,里边有说明。

链接:点击打开链接


使用:如何使用?


然后去查了下资料,看到有这个方法给我们提供,这是我在重写onCreate方法的时候,好几次都重写错成以下的方法了。

@Override
public void onCreate(Bundle savedInstanceState,PersistableBundle persistentStable) {
    super.onCreate(savedInstanceState,persistentStable);
}
注意这是有两个参数的oncreate()方法,不是我们页面的入口那一个,看好了。

这里我们第二个参数PersistableBundle是咋回事?不急,听我道来:

这是5.0给我们提供的新的方法,要用它,先要在配置文件中为我们的Activity设置一个属性,那就是我一开始提到的那个属性。

android:persistableMode=“persistAcrossReboots|persistRootOnly|persistNever"


persistableMode有三个值:

persistNever:从不,顾名思义,就是不起作用,不调用那两个方法持久化页面的数据或者状态。(原文:If this activity forms the root of a task then that task will not be persisted across reboots)


persistRootOnly:默认值。仅仅会作用在根activity或者task中。(原文:The default. If this activity forms the root of a task then that task will be persisted across reboots but only the launching intent will be used. If the task relinquishes its identity then the intent used is that of the topmost inherited identity. All activities above this activity in the task will not be persisted. In addition this activity will not be passed a PersistableBundle into which it could have stored its state.)(有点难理解哈,看不懂这个说的是啥,各位看官自己来)


persistAcrossReboots:重启设备,会持久化页面的数据或者状态,同理,如果位于这个页面之上的页面也设置了这个值,上面的页面也会被持久化。最后系统会将你保存的数据,在重启后打开这个页面的时候,会调用oncreate()具有两个参数的方法。你只要在第二个参数PersistableBundle 中取出你保存的数据就OK了。


然后结合这两个方法,在oncreate(Bundle savedInstanceState,PersistableBundle persistentStable)方法增加的这个PersistableBundle参数,令这些方法

拥有了系统关机后重启的数据恢复能力。

public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)

public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState)


如有任何疑问,请及时与我联系,谢谢!




  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值