zoukankan      html  css  js  c++  java
  • 持久化应用程序实例的状态

    我们度知道,android应用程序的生命周期不是由它自己控制的,当资源匮乏的时候,android为了保障用户体验,就会释放那些进程优先级比较低的应用程序。

    此时保存应用程序的实例状态,就变得极其重要

    activity生命周期中有一个onSaveInstanceState方法,此方法是在onResume执行之后,onPause执行之前执行的。也就是说此方法总是会运行的。

    在此方法中保存实例的状态再好不过了。

    有2中保存实例的方法:

    1、使用sharedPreference,可以创建只针对当前activity的sp

      使用Activity.getPreference()

    2、还有一种就是使用onSaveInstanceState的参数Bundle进行存储

    要注意的一点是:当我们手动关闭activity(按返回键)或者代码中调用finish的时候,在activity重新创建的时候onCreate(Bundle)的bundle参数是空的,只有在

    系统销毁了我们的activity后,在启动才会包含此参数

    =========================================================================

    上面讲的是activity的实例状态持久化,随着3.0后fragment的推出。fragment用的越来越多了

    那么如果在activity销毁之后,保留fragment的实例状态,来提高应用程序的性能呢

    可以在fragment的oncreate方法中调用setRetainInstance方法。当activity销毁之后,fragment的实例不会销毁。当activity在重新启动的时候,由于fragment的

    实例还存在,所以只需要在onCreateView的时候更新ui的信息。

    注明:activity的销毁重启,对于fragment而言onCreate、onDestroy方法不会被调用,其他方法还是会被调用的

  • 相关阅读:
    Mac修改默认的电子邮箱客户端
    记录下生活:ETC卡充值(上海)
    Mac下卸载Mysql数据库
    网络爬虫学习笔记 1
    Clock置换算法
    用random.randint函数时 报错 'str' object cannot be interpreted as an integer问题
    分页式存储管理
    初学C++ vector 容器
    马一个讲devc++调试讲的很好的视频
    一些笔记(xss 跨站脚本攻击)
  • 原文地址:https://www.cnblogs.com/zhengqun/p/4618849.html
Copyright © 2011-2022 走看看