美文网首页
Android之Fragment懒加载

Android之Fragment懒加载

作者: 小剑哥 | 来源:发表于2017-01-25 13:38 被阅读90次

    提前1个月放(ci)假(zhi)的感觉真好,本想着好好带带小孩,陪陪父母妻子,却一不小心钻进了Android,谁让我热爱coding就如小时候爱看小说呢。

    上个app的mainActiviy用的fragmentManager直接切换,非pagerView,首次进入fragment,在低端手机会有零点几秒的微卡顿,这对有强迫症的我来说忍无可忍,于是乎,研究了手机上的若干APP,发现WeChat的客户端首次加载会用一个loading的进度条,然后再加载,这样就让用户体验上升了无数个档次。


    微信录影.gif

    Fragment创建的流程:setUserVisibleHint()->onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()

    Fragment变为不可见状态(锁屏、回到桌面、被Activity完全覆盖):onPause()->onSaveInstanceState()->onStop();

    Fragment变为部分可见状态(打开Dialog样式的Activity):onPause()->onSaveInstanceState();

    Fragment由不可见变为活动状态:onStart()->OnResume();

    Fragment由部分可见变为活动状态:onResume();

    退出应用:onPause()->onStop()->onDestroyView()->onDestroy()->onDetach()(注意退出不会调用onSaveInstanceState方法,因为是人为退出,没有必要再保存数据);

    Fragment被回收又重新创建:被回收执行onPause()->onSaveInstanceState()->onStop()->onDestroyView()->onDestroy()->onDetach(),重新创建执行onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()->setUserVisibleHint();

    横竖屏切换:与Fragment被回收又重新创建一样。

    Fragment每个生命周期方法的意义、作用:
    setUserVisibleHint():设置Fragment可见或者不可见时会调用此方法。在该方法里面可以通过调用getUserVisibleHint()获得Fragment的状态是可见还是不可见的,如果可见则进行懒加载操作。
    onAttach():执行该方法时,Fragment与Activity已经完成绑定,该方法有一个Activity类型的参数,代表绑定的Activity,这时候你可以执行诸如mActivity = activity的操作。
    onCreate():初始化Fragment。可通过参数savedInstanceState获取之前保存的值。
    onCreateView():初始化Fragment的布局。加载布局和findViewById的操作通常在此函数内完成,但是不建议执行耗时的操作,比如读取数据库数据列表。
    onActivityCreated():执行该方法时,与Fragment绑定的Activity的onCreate方法已经执行完成并返回,在该方法内可以进行与Activity交互的UI操作,所以在该方法之前Activity的onCreate方法并未执行完成,如果提前进行交互操作,会引发空指针异常。
    onStart():执行该方法时,Fragment由不可见变为可见状态。
    onResume():执行该方法时,Fragment处于活动状态,用户可与之交互。
    onPause():执行该方法时,Fragment处于暂停状态,但依然可见,用户不能与之交互。
    onSaveInstanceState():保存当前Fragment的状态。该方法会自动保存Fragment的状态,比如EditText键入的文本,即使Fragment被回收又重新创建,一样能恢复EditText之前键入的文本。
    onStop():执行该方法时,Fragment完全不可见。
    onDestroyView():销毁与Fragment有关的视图,但未与Activity解除绑定,依然可以通过onCreateView方法重新创建视图。通常在ViewPager+Fragment的方式下会调用此方法。
    onDestroy():销毁Fragment。通常按Back键退出或者Fragment被回收时调用此方法。
    onDetach():解除与Activity的绑定。在onDestroy方法之后调用。

    参考http://www.cnblogs.com/dasusu/p/5926731.html

    相关文章

      网友评论

          本文标题:Android之Fragment懒加载

          本文链接:https://www.haomeiwen.com/subject/ovbtittx.html