码迷,mamicode.com
首页 > 其他好文 > 详细

Fragment的懒加载

时间:2016-03-15 18:35:45      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

   当我们的Viewpager含有很多个fragment时 一次全加载出来太占内存 我们可以用fragment的懒加载  当fragment可见的时候加载数据

Viewpager加载fragment的时候有个特点  会预加载当前可见页面左右相邻的页面  相邻的页面会走一遍生命周期(从onAttach直到onResume)

 

  

技术分享
 1 /*
 2  * Date: 14-7-17
 3  * Project: Access-Control-V2
 4  */
 5 package cn.irains.access_control_v2.common;
 6 
 7 import android.support.v4.app.Fragment;
 8 
 9 /**
10  * Author: msdx (645079761@qq.com)
11  * Time: 14-7-17 下午5:46
12  */
13 public abstract class LazyFragment extends Fragment {
14     protected boolean isVisible;
15     /**
16      * 在这里实现Fragment数据的缓加载.
17      * @param isVisibleToUser
18      */
19     @Override
20     public void setUserVisibleHint(boolean isVisibleToUser) {
21         super.setUserVisibleHint(isVisibleToUser);
22         if(getUserVisibleHint()) {
23             isVisible = true;
24             onVisible();
25         } else {
26             isVisible = false;
27             onInvisible();
28         }
29     }
30 
31     protected void onVisible(){
32         lazyLoad();
33     }
34 
35     protected abstract void lazyLoad();
36 
37     protected void onInvisible(){}
38 }
lazyfragment

setUserVisibleHint(boolean isVisibleToUser)在onCreateView之前执行 

 

然后去定义一个类继承上边的父类

技术分享
 1 /*
 2  * Date: 14-7-17
 3  * Project: Access-Control-V2
 4  */
 5 package cn.irains.access_control_v2.common;
 6 
 7 import android.support.v4.app.Fragment;
 8 
 9 /**
10  * Author: msdx (645079761@qq.com)
11  * Time: 14-7-17 下午5:46
12  */
13 public abstract class LazyFragment extends Fragment {
14     protected boolean isVisible;
15     /**
16      * 在这里实现Fragment数据的缓加载.
17      * @param isVisibleToUser
18      */
19     @Override
20     public void setUserVisibleHint(boolean isVisibleToUser) {
21         super.setUserVisibleHint(isVisibleToUser);
22         if(getUserVisibleHint()) {
23             isVisible = true;
24             onVisible();
25         } else {
26             isVisible = false;
27             onInvisible();
28         }
29     }
30 
31     protected void onVisible(){
32         lazyLoad();
33     }
34 
35     protected abstract void lazyLoad();
36 
37     protected void onInvisible(){}
38 }
View Code

这样就保证了 只有在fragment可见时才去加载数据  不会造成activity一次加载很多fragment的数据

Fragment的懒加载

标签:

原文地址:http://www.cnblogs.com/bimingcong/p/5280369.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!