概述
1、简介
该篇博客是以记录Android开发中Fragment的使用技巧。作为开发中的大头,这一块还是有必要好好了解一下的。包括其生命周期包括其重要特性等,主要研究了fragment的懒加载以及fragment生命周期的使用和调用过程。
优雅的懒加载实现
开发也有一段时间了,不能说一直忽略懒加载,但是由于之前一直没有很好的掌握,故而希望借这次机会真真正正的把懒加载做好,因为不然性能真的很差,真的很难忍受初始化的时候明明只是进入了Fragment A 而 Fragment B C D 确得到了加载。这样真的非常的不好,因为每一个Fragment主页可能都会有很多的资源和网络请求需要进行加载,可想而知是非常的缓慢的,而且很容易造成内存不够的问题。说了这么多,有吐槽自己的不足点,也阐明了懒加载的必要性,下面就有有必要整理下实际项目中的懒加载应该如何做。OK,阐述一下懒加载主要存在于类似于TabLayout+ViewPager这种包含有缓存中,普通的Fragment切换是不需要懒加载的。
2 、知识储备
相信对于Fragment的生命周期大家都有所了解吧,下面是图例。
值得留意的是不同于Activity被操作系统管理,Fragment是依附于Activity的同样其也是托管于Activity的。注意这里能发现Activity的方法类似,是的,对于Fragement而言,其调用时机也是和活动相同步的。
案例1展示:活动-fragment-fragment切换生命周期
如下方log所展示,详细的记录了生命周期的切换。
//启动活动并且显示add FragmentA
Activity onCreate
FragmentA onAttach
onCreate
onCreateView
onStart
Activity onStart
onResume
FragmentA onResume
//先隐藏FragmentA 然后再add FragmentB
FragmentB onAttach
onCreate
onCreateView
onStart
onResume
// 退出活动
FragmentA onPause
FragmentB onPause
Activity onPause
FragmentA onStop
FragmentB onStop
Activity onStop
FragmentA onDestroyView
onDestroy
onDetach
FragmentB onDestroyView
onDestroy
onDetach
Activity onDestroy
案例展示2:验证setUserVisibleHint的调用时机
// 活动中展示Fragment
private void showFragment() {
// 开启事务 ------
FragmentTransaction fragmentTransaction =
getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment,new FragmentA());
// 进行提交 -------
fragmentTransaction.commit();
}
// Fragment中打印Log日志
@Override
public void onAttach(Context context) {
super.onAttach(context);
Log.e(TAG, "onAttach: ");
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
Log.e(TAG, "setUserVisibleHint: "+ isVisibleToUser);
super.setUserVisibleHint(isVisibleToUser);
}
@Override
public void onDetach() {
super.onDetach();
Log.e(TAG, "onDetach: ");
}
观察启动界面的日志:
09-12 11:29:06.173 3577-3577/com.example.mydairytestproject E/FragmentA: onAttach:
09-12 11:29:08.585 3577-3577/com.example.mydairytestproject E/FragmentA: onDetach:
值得注意的是,当仅仅是启动或者关闭一个Fragment时,其实并不会调用setUserVisibleHint()方法的。 该方法调用的时机是在:不同fragment切换时才会调用。
那我们接下来完成一个ViewPager+Fragment的案例(FragmentA + FragmentB),看看其生命周期调用的情况吧。
这次我们打印Fragment的生命周期方法调用吧,说明一下,我是这样操作的: 首先自然是打开Activity显示的是FragmentA,然后切换到FragmentB 之后再切换回 FragmentA.
16467-16467/com.example.mydairytestproject E/FragmentA: setUserVisibleHint: false
16467-16467/com.example.mydairytestproject E/FragmentB: setUserVisibleHint: false
16467-16467/com.example.mydairytestproject E/FragmentA: setUserVisibleHint: true
16467-16467/com.example.mydairytestproject E/FragmentA: onCreate:
16467-16467/com.example.mydairytestproject E/FragmentB: onCreate:
16467-16467/com.example.mydairytestproject E/FragmentA: onCreateView:
16467-16467/com.example.mydairytestproject E/FragmentB: onCreateView:
6467-16467/com.example.mydairytestproject E/FragmentA: setUserVisibleHint: false
16467-16467/com.example.mydairytestproject E/FragmentB: setUserVisibleHint: true
16467-16467/com.example.mydairytestproject E/FragmentB: setUserVisibleHint: false
6467-16467/com.example.
最后
以上就是飞快项链为你收集整理的Android基础之Fragment常用技巧(懒加载)1、简介2 、知识储备3、懒加载案例的全部内容,希望文章能够帮你解决Android基础之Fragment常用技巧(懒加载)1、简介2 、知识储备3、懒加载案例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复