美文网首页
Fragment面试详解

Fragment面试详解

作者: 程序猿BOSS | 来源:发表于2017-10-19 15:30 被阅读11次

    1、Fragment为什么被称为第五大组件

    在日常开发中Fragment使用频率很高,Fragment不属于其他四大组件,但是它有属于自己的生命周期。可以方便灵活的添加到Activity中,它不能独立使用,必须依附于Activity。所以我认为它可以被称为第五大组件。

    Fragment相比于Activity更节省内存,页面切换更加流畅。

    2、Fragment加载到Activity的两种方式

    2.1静态加载:添加Fragment到Activity的布局文件当中

    2.2动态加载:动态在Activity中添加Fragment

    3、FragmentPagerAdapter与FragmentStatePagerAdapter的区别

    FragmentPagerAdapter适用于页面较少的情况,FragmentStatePagerAdapter适用于页面较多的情况。因为FragmentStatePagerAdapter页面切换的时候会回收内存。

    在FragmentStatePagerAdapter的destoryItem()方法中,最后FragmentTransaction.remove(fragmnet)方法。真正的释放了Fragmnet的内存。这就是说FragmentStatePagerAdapter比FragmentPagerAdapter更节省内存的。

    在FragmentPagerAdapter的destoryItem()方法中,最后FragmentTransaction.detach(fragment)方法。并不是真正的内存回收,只是把Fragmnet UI和Activity脱离开来。

    4、Fragment的生命周期

    5、Fragment的通信

    5.1在Fragment中调用Activity的方法,getActivity()

    5.2在Activity中调用Fragment的放发接口回调,在Fragment中定义接口,在Activity中实现方法

    5.3在Fragment中调用Fragment的方法,findFragmentById();首先在Fragment通过getActivity()方法,获取Activity中的方法。然后在Activity中findFragmentById()获取到Activity所对应的另外Fragment的方法

    6、Fragment的replace()、add()、remove()方法

    replace:替换Fragment实例,不是直接把Fragment添加到Activity的最上层。它是把Activity的最上层的Fragment替换成它想替换的Fragment

    add:将Fragment实例添加到Activity的最上层

    remove:将Fragment实例从Activity的队列中删除

    相关文章

      网友评论

          本文标题:Fragment面试详解

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