提问之星 2015-11-22 02:02 采纳率: 90%
浏览 1859
已采纳

在android中关于onCreate方法新参数问题

android中onCreate方法新参数(persistableBundle persistentState)是让Activity拥有持久化能力,如何理解这个持久化能力呢?

  • 写回答

1条回答 默认 最新

  • 简一_hz 2015-11-25 02:13
    关注

    一般我们会搭配两个方法来使用:
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)
    public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState)
    前一个方法会在下述情形中被调用:
    点击home键回到主页或长按后选择运行其他程序
    按下电源键关闭屏幕
    启动新的Activity
    横竖屏切换时,肯定会执行,因为横竖屏切换的时候会先销毁Act,然后再重新创建 重要原则:当系统"未经你许可"时销毁了你的activity,则onSaveInstanceState会被系统调用, 这是系统的责任,因为它必须要提供一个机会让你保存你的数据(你可以保存也可以不保存)。
    而后一个方法,和onCreate同样可以从取出前者保存的数据: 一般是在onStart()和onResume()之间执行! 之所以有两个可以获取到保存数据的方法,是为了避免Act跳转而没有关闭, 然后不走onCreate()方法,而你又想取出保存数据~

    说回这个Activity拥有了持久化的能力,增加的这个PersistableBundle参数令这些方法 拥有了系统关机后重启的数据恢复能力!!而且不影响我们其他的序列化操作, 具体怎么实现的,暂时还不了解,可能是另外弄了个文件保存吧~!另外,API版本需要>=21,就是要5.0以上的版本才有效~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵