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

转载同事的内容
原文链接 这里写链接内容

首先这里先给出一个大致的思路,就是首先我们的保存一个最后退出的时间,然后每次app进入的时候再拿到我们之前保存退出的时间,和当前的时间进行对比,如果相同则是同一天内登录,反之。思路理清了,剩下的就是填空题了。
一.首先当我们每次进入时获取之前存储的时间,这里直接上我自己写的一个方法,注释都很全直接看

**
     * 判断是否是当日第一次登陆
     */
    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第一次安装的时候默认判断是第一次登录的。

二.然后退出时间保存我是在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();
    }

就是这么简单完成了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值