Fragment面试详解

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的生命周期


Fragment面试详解_第1张图片

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面试详解)