zoukankan      html  css  js  c++  java
  • 【Android开发坑系列】之Fragment

    这个东西有顾名思义是碎片,和之前的Activity对应。

    坑1:一般情况都会想当然的以为进程被杀掉之后,Fragment也会被回收

    其实,Fragment有自己的生命周期,有自己的管理器(FragmentManager),也即:
    包含Fragment的进程被干掉,Fragment不一定会被回收,而是由FragmentManager来决定生死。

    Q:如何验证上面的说法?
    A:如果是一般正常的流程“打开-关闭”软件,Fragment的确被回收了。但是如果使用“腾讯手机管家”之类的内存清理工具,清理内存(实际上是杀死进程),会发现Fragment没有被回收,一直缓存着。验证方法如下:缓存Fragment的Tag到本地数据库(可以是xml/sqlite等),然后FragmentManager.findFragmentByTag(...)是否为Null来验证Framgent是否被回收了。

    有个奇怪的现状是:在上面蓝色的情况发生后,Framgent和包含他的Activity的生命周期顺序都乱套了,原本是:
    Activity.onCreate-->Fragment.onCreate-->Fragment.onCreateView
    变成:
    Fragment.onCreate-->Activity.onCreate-->Fragment.onCreateView
    猜测是因为直接用的Frament缓存,其onCreate先于父Activity.onCreate执行了。

    坑2:添加Fragment注意事项,阅读:http://www.tuicool.com/articles/qaA7ry

  • 相关阅读:

    ATM三层架构思路
    一个项目的从无到有
    re模块
    logging模块
    物联网公共安全平台软件体系架构
    本科生怎样发表自己的论文
    Cloud Native 云化架构阅读笔记
    实验5 Spark SQL编程初级实践
    云计算环境下计算机软件系统架构分析
  • 原文地址:https://www.cnblogs.com/kaima/p/3178442.html
Copyright © 2011-2022 走看看