Fragment

作者: 瑟闻风倾 | 来源:发表于2019-11-05 11:21 被阅读0次

    1. Fragment生命周期

    (1) 为什么被成为第五大组件:像activity一样具有自己的生命周期,可灵活地加载到activity中,比activity更节省内存。
    (2) Fragment加载到Activity 中的两种的方式
    注意:fragment必须依赖于activity。即:fragmen生命周期依赖于activity的生命周期,如一个activity的onPause()的生命周期方法被调用的时候这个activity中的所有的fragment的onPause()方法也将被调用。

    • 静态加载:fragment添加到activity布局
    • 动态加载(常用):在代码中通过FragmentManager来管理fragment。具体步骤为通过FragmentManager对象获得FragmentTransaction对象,之后通过它的API实现在activity运行时动态地add、replace或remove掉fragment

    (3) Fragment 生命周期:


    fragment生命周期.png

    2. Fragment通信

    (1) Activity与Fragment的通信(Activity调用Fragment中的方法):通过接口回调的方式实现在Activity调用Fragment中的方法。即在fragment中定义接口,在activity中来实现。
    (2) Fragment与Activity的通信(Fragment调用Activity中的方法):Fragment中通过getActivity()方法获取到activity,之后便可调用activity中的方法。
    (3) Fragment间的通信:.两个单独的Fragment之间是不能直接进行通信的,需使用他们所存在的Activity作为沟通的纽带。即:Fragment1通过getActivity()方法获取到Fragment2所依赖的activity,然后通过findFragmentById()方法获取到Fragment2,之后便可调用Fragment2中的方法。

    3. FragmentPagerAdapter和FragmentStatePagerAdapter的区别

    • FragmentPagerAdapter:保存所有加入的fragment,虽然步长超过1的页面会调用destroyItem,但是在fragment的生命周期里,只有onDestroyView调用了,没有调用onDestory,也没有调用onDetach,所以fragment只是把上面的view销毁了,fragment并没有销毁,下次再创建的时候,只会调用onCreateView和onActivityCreated,所以FragmentPagerAdapter里所有fragment都没有被销毁,虽然占用内存大,但是避免了频繁的销毁和创建,适用于页面比较少的情况

    • FragmentStatePagerAdapter:对步长以内的fragment,跟FragmentPagerAdapter一样,不会调用任何销毁操作,再次显示也无需重新创建,对步长以外的fragment会调用destroyItem,跟FragmentPagerAdapter不一样,FragmentStatePagerAdapter里所有fragment都会被真正销毁(同时销毁view和fragment,调用onDestroyView以及其后面的所有销毁方法),重建时会从最初的onAttach开始一直到onActivityCreated,适用于页面比较多的情况

    相关文章

      网友评论

        本文标题:Fragment

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