现行逾多之运会用viewpager+fragment显示自己的情页,fragment和activity有诸多共同点,如下图就是是fragment的生命周期统计 1

统计 2 set key value

统计 3

统计 4 del keys 删除键 
删除几只返回相应的数字 

@Override  
public void setUserVisibleHint(boolean isVisibleToUser) {  
        L.v(TAG, "setUserVisibleHint " + isVisibleToUser);  
        if (isVisibleToUser) {  
            //统计代码 或者 fragment显示操作  
        } else {  
              
        }  
 }  

统计 5 mset  mget 
一不善存储和沾多单键值

viewPager.setOffscreenPageLimit(0);

 

可是fragment和activity不同之是当调用本身的onResume和onPause方法的时光或并无是眼前的fragment在显示,例如当加载下面这张图时,当自己打开MainActivity时展示的凡第一只fragment
但这调用的道步骤如下:

strlen落键的值的字符串长度。

/** 
     * 判断是否是初始化Fragment 
     */  
    private boolean hasStarted = false;  
    @Override  
    public void setUserVisibleHint(boolean isVisibleToUser) {  
        super.setUserVisibleHint(isVisibleToUser);  
        L.v(TAG, "setUserVisibleHint " + isVisibleToUser);  
        if (isVisibleToUser) {  
            hasStarted = true;  
            L.v(TAG,"开始界面");  
        } else {  
            if (hasStarted) {  
                hasStarted = false;  
                L.v(TAG,"结束界面");  
            }  
        }  
    }  

incr key递增数字,用get set自主实现incr
key会发生竞态。详情请圈本身的Redis并发锁一温和。如果非有的key默认为0,该令操作后值为1,返回递增后的价值。

切换至第二单fragment时,此时相差第一只fagment  log打印如下

统计 6 使用配合任意一个字符。注意
是“”个

 

统计 7  incrby key 
增加指定值,返回的凡长后的结果。

当切换到第二独fragment时打印日志:

统计 8     
使用*匹配配任意个(包括0个)字符

这个 DEFAULT_OFFSCREEN_PAGES 定义如下 private static final
intDEFAULT_OFFSCREEN_PAGES;

Redis有五栽为主数据列。他们分别是字符串,散列,列表,集合,有序聚集。实际上,后四种植,在我们外表上亮看来,是因不同之样式来组织字符串键值。

  

统计 9 exists
判断是否有,存在几乎独返回相应的数字

08-11 11:33:36.156    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
setUserVisibleHint false
08-11 11:33:36.156    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
setUserVisibleHint false
08-11 11:33:36.157    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
setUserVisibleHint true
08-11 11:33:36.158    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onAttach
08-11 11:33:36.158    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onCreate
08-11 11:33:36.159    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onCreateView
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onActivityCreated
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onResume()
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onAttach
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onCreate
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onCreateView
08-11 11:33:36.161    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onActivityCreated
08-11 11:33:36.161    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onResume()

统计 10 使用[] 匹配范围

  

keys支撑通配符号

public void setOffscreenPageLimit(int limit) {  
        if (limit < DEFAULT_OFFSCREEN_PAGES) {  
            Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " +  
                    DEFAULT_OFFSCREEN_PAGES);  
            limit = DEFAULT_OFFSCREEN_PAGES;  
        }  
        if (limit != mOffscreenPageLimit) {  
            mOffscreenPageLimit = limit;  
            populate();  
        }  
    }  

另外在习惯中,我们吧Redis的key命名是出于对象类型:对象ID:对象属性命名的。

足见这则用户观看的是率先只fragment 但次只fragment onAttech
onCreate onCreateView onActivityCreater
onStart(“这个我没油打印log”)onResume
方法都调用,这会招致如果我们而统计用户更欣赏谁fragment的情节时,虽然fragment已经创造并且onResume但实在并从未出示就同样页,那么是啊由呢,这是为v4包下之viewpager,为了为用户以切换过程中未见面卡顿,谷歌官方默认当创建第一个fragment方法时转创建第二单fragment以担保用户滑动时第二只view已经被创造,保持viewPager的平滑动效果。

统计 11 type key  
返回key的类型

08-11 11:33:36.161    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onResume()  

 

运行时打印的log和方面完全一致,即就算你设置单独加载一个fragment还是会见加载第二个fragment,原因是setOffscreenPageLimit中之源码时这样形容的

章归博客园和作者“蜗牛”共同享有 。转载以及爬虫请注明原文Redis系列链接
http://www.cnblogs.com/tdws/tag/NoSql/

为解决判断是否fragment当前来得问题 可以当fragment重写
setUserVisibleHint(boolean isVisibleToUser)

统计 12 append key
val拼接值,最后回到字符串长度。

08-11 11:33:54.084    7162-7162/com.example.yinsgo.myui V/Fragment3﹕
setUserVisibleHint false
08-11 11:33:54.084    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
setUserVisibleHint false
08-11 11:33:54.084    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
setUserVisibleHint true
08-11 11:33:54.084    7162-7162/com.example.yinsgo.myui V/Fragment3﹕
onAttach
08-11 11:33:54.085    7162-7162/com.example.yinsgo.myui V/Fragment3﹕
onCreate
08-11 11:33:54.085    7162-7162/com.example.yinsgo.myui V/Fragment3﹕
onCreateView
08-11 11:33:54.085    7162-7162/com.example.yinsgo.myui V/Fragment3﹕
onActivityCreated
08-11 11:33:54.085    7162-7162/com.example.yinsgo.myui V/Fragment3﹕
onResume()

君得据此该储存任何你所梦想的同等片整体多少,是圆数量哟。如果是文章的题目,标签,内容,评论这样的数目,虽然你可拿该目标序列化为Json存储,但是不建议以字符串。因为作为一个完好存储,当您想得中任意一件时,比如标题或者说作者,你要取整文章数据以传输量大了成千上万,接下反序列化,并获标题。你为还可存储base64一类似的图等等。最常用的例如用户称,密码,邮箱,验证码相当于。一个字符串键最特别允许存储512MB数据。

 

小结:简单介绍了着力的字符串类型操作及结果。还有位操作没有怎么用了。incr命令一般可用于文章的ID,访问量统计等情景,不会见有起竞态。

08-11 11:33:36.156    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
setUserVisibleHint false
08-11 11:33:36.156    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
setUserVisibleHint false
08-11 11:33:36.157    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
setUserVisibleHint true
08-11 11:33:36.158    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onAttach
08-11 11:33:36.158    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onCreate
08-11 11:33:36.159    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onCreateView
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onActivityCreated
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onResume()
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onAttach
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onCreate
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onCreateView
08-11 11:33:36.161    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onActivityCreated
08-11 11:33:36.161    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onResume()

decr decrby都是减法。

足见当fragment显示时回调用智 setUserVisibleHint中之isVisibleToUser =
true 当fragment被切换隐藏时回 isVisibleToUser = false;

遵照:Artical:4001:ViewCount    文章4001之访问量      Project:1001:PM 
项目1001底PM      Book:9001:Author.Name  书籍9001的作者称

开行activity打印日志如下:

统计 13keys * 列出具有键
keys   ,不建议在生条件下。

public class Fragment1 extends Fragment {  
    private static final String TAG = "Fragment1";  
  
    @Override  
    public void onAttach(Activity activity) {  
        super.onAttach(activity);  
        L.v(TAG, "onAttach");  
    }  
  
    @Override  
    public void setUserVisibleHint(boolean isVisibleToUser) {  
        L.v(TAG, "setUserVisibleHint " + isVisibleToUser);  
    }  
  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        L.v(TAG, "onCreate");  
    }  
  
    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
        L.v(TAG, "onCreateView");  
        View view = inflater.inflate(R.layout.fragment_layout,null);  
        TextView tv = (TextView) view.findViewById(R.id.tv1);  
        tv.setText(TAG);  
        return view;  
    }  
  
    @Override  
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {  
        super.onActivityCreated(savedInstanceState);  
        L.v(TAG,"onActivityCreated");  
    }  
  
    @Override  
    public void onResume() {  
        super.onResume();  
        L.v(TAG, "onResume()");  
    }  
  
    @Override  
    public void onPause() {  
        super.onPause();  
        L.v(TAG,"onPause");  
    }  
  
    @Override  
    public void onStop() {  
        super.onStop();  
        L.v(TAG,"onStop");  
    }  

get key  获取键值  只适用于字符串哟

阅读谷歌api发现viewpager有一个办法就
setOffscreenPageLimit。但当当viewpager设置以下代码

 统计 14 还有一个\x转义符,这便是在急需取有转义符号的情节时用到的。 

  

在fragment添加log日志

08-13 17:55:45.850  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
setUserVisibleHint false
08-13 17:55:45.850  21467-21467/com.example.yinsgo.myui V/Fragment2﹕
setUserVisibleHint false
08-13 17:55:45.850  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
onAttach
08-13 17:55:45.850  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
onCreate
08-13 17:55:45.850  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
setUserVisibleHint true
08-13 17:55:45.860  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
开始界面
08-13 17:55:45.860  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
onCreateView
08-13 17:55:45.870  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
onActivityCreated
08-13 17:55:45.880  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
onResume()
08-13 17:55:45.880  21467-21467/com.example.yinsgo.myui V/Fragment2﹕
onAttach
08-13 17:55:45.880  21467-21467/com.example.yinsgo.myui V/Fragment2﹕
onCreate
08-13 17:55:45.880  21467-21467/com.example.yinsgo.myui V/Fragment2﹕
onCreateView
08-13 17:55:45.880  21467-21467/com.example.yinsgo.myui V/Fragment2﹕
onActivityCreated
08-13 17:55:45.880  21467-21467/com.example.yinsgo.myui V/Fragment2﹕
onResume()

切换至第三只fragment时,此时距第二独fragment log打印如下:

哪怕是只要你设置为0 也从没因此。!!!

先是涂鸦setUserVisibleHint 方法 isVisibleToUser 是false
但实际这上只是还非初始化,并无是用户就浏览界面准备离开,于是这里我们用一个帮忙标记变量具体代码如下:

今日而看了转发现就的执行方的代码是生题目的,因为要是我们于else中以为用户是离界面其实是非正常的,因为根据启动第一单Fragment的log日志

  

为此当我们如果统计是否用户观看一个fragment时得以推行一下代码

08-13 17:57:04.310  21467-21467/com.example.yinsgo.myui V/Fragment3﹕
setUserVisibleHint false
08-13 17:57:04.310  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
setUserVisibleHint false
08-13 17:57:04.310  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
结束界面
08-13 17:57:04.310  21467-21467/com.example.yinsgo.myui V/Fragment2﹕
setUserVisibleHint true
08-13 17:57:04.310  21467-21467/com.example.yinsgo.myui V/Fragment2﹕
开始界面
08-13 17:57:04.310  21467-21467/com.example.yinsgo.myui V/Fragment3﹕
onAttach
08-13 17:57:04.310  21467-21467/com.example.yinsgo.myui V/Fragment3﹕
onCreate
08-13 17:57:04.310  21467-21467/com.example.yinsgo.myui V/Fragment3﹕
onCreateView
08-13 17:57:04.320  21467-21467/com.example.yinsgo.myui V/Fragment3﹕
onActivityCreated
08-13 17:57:04.320  21467-21467/com.example.yinsgo.myui V/Fragment3﹕
onResume()

08-13 17:58:15.040  21467-21467/com.example.yinsgo.myui V/Fragment2﹕
setUserVisibleHint false
08-13 17:58:15.040  21467-21467/com.example.yinsgo.myui V/Fragment2﹕
结束界面
08-13 17:58:15.040  21467-21467/com.example.yinsgo.myui V/Fragment3﹕
setUserVisibleHint true
08-13 17:58:15.040  21467-21467/com.example.yinsgo.myui V/Fragment3﹕
开始界面
08-13 17:58:15.040  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
onPause
08-13 17:58:15.040  21467-21467/com.example.yinsgo.myui V/Fragment1﹕
onStop

 

当我们启动MainActivity时 Log打印如下:

再者因这个法还可进行数量的缓加载,后面更写。

08-11 11:33:36.158    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onAttach
08-11 11:33:36.158    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onCreate
08-11 11:33:36.159    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onCreateView
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onActivityCreated
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment1﹕
onResume()
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onAttach
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onCreate
08-11 11:33:36.160    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onCreateView
08-11 11:33:36.161    7162-7162/com.example.yinsgo.myui V/Fragment2﹕
onActivityCreated

足见这样尽管好准确统计用户是否去或开浏览界面了。根据这些开与离可以统计用户停留界面的时光相当数。