Android如何判断app是否是每日第一次登录

话说今天是5.4青年节,听朋友说他们公司会给27岁以下的员工放半天假,听完之后。感觉自己都是“大叔级别”了。我瞬间凌乱。。。不叨叨了,5.4是年轻人的节日。大叔程序员伤不起啊。最后打算写篇博客压压惊。

相信这种需求在如今的app中是非常常见的,每日首次登录会领取一定的积分,为app带来一定的用户粘度。今天来实现以下这个需求:


首先这里先给出一个大致的思路,就是首先我们的保存一个最后退出的时间,然后每次app进入的时候再拿到我们之前保存退出的时间,和当前的时间进行对比,如果相同则是同一天内登录,反之。思路理清了,剩下的就是填空题了。


1,这里我们利用android提供的一种轻量级数据存储SharedPreferences进行数据存储。对SharedPreferences的用法不熟悉的童鞋可以参考我之前的一篇博客Android当中数据存储之SharedPrefernces存储。

2.首先当我们每次进入时获取之前存储的时间,这里直接上我自己写的一个方法,注释都很全直接看

 /**
     * 判断是否是当日第一次登陆
     */
    private void isTodayFirstLogin() {
        //取
        SharedPreferences preferences = getSharedPreferences("LastLoginTime", MODE_PRIVATE);
        String lastTime = preferences.getString("LoginTime", "2017-04-08");
        // Toast.makeText(MainActivity.this, "value="+date, Toast.LENGTH_SHORT).show();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");// 设置日期格式
        todayTime = df.format(new Date());// 获取当前的日期

        if (lastTime.equals(todayTime)) { //如果两个时间段相等
            Toast.makeText(this, "不是当日首次登陆", Toast.LENGTH_SHORT).show();
            Log.e("Time", lastTime);
        } else {
            Toast.makeText(this, "当日首次登陆送积分", Toast.LENGTH_SHORT).show();
            Log.e("date", lastTime);
            Log.e("todayDate", todayTime);
        }
    }

这里解释一下

String lastTime = preferences.getString(“LoginTime”, “2017-04-08”);

这个为什么后面还有个”2017-04-08”。这个是考虑到安装app的时候第一次我们没有存储退出的时间,所以就当取不到数据的时候给他一个默认值。这样当app第一次安装的时候默认判断是第一次登录的。

3.然后退出时间保存我是在onDestroy()的时候进行保存

 @Override
    protected void onDestroy() {
        super.onDestroy();
        saveExitTime(todayTime);
    }
 /**
     * 保存每次退出的时间
     * @param extiLoginTime
     */
    private void saveExitTime(String extiLoginTime) {
      SharedPreferences.Editor editor = getSharedPreferences("LastLoginTime", MODE_PRIVATE).edit();
        editor.putString("LoginTime", extiLoginTime);
        //这里用apply()而没有用commit()是因为apply()是异步处理提交,不需要返回结果,而我也没有后续操作
        //而commit()是同步的,效率相对较低
        //apply()提交的数据会覆盖之前的,这个需求正是我们需要的结果
        editor.apply();
    }

就是这么简单完成了。

你可能感兴趣的:(Android,实用小功能)