美文网首页
Android每天累计时长只执行一次任务

Android每天累计时长只执行一次任务

作者: 职场过客 | 来源:发表于2023-02-09 16:43 被阅读0次

    需求:要求app每天使用超过90分钟告诉服务器进行统计
    分析:1.计算累计时间,进行保存,因为app会被退出
    2.每天只执行一次,也就需要判断当天
    判断当天代码:

       /**
         * @param context 当前Context
         * @return  true表示没有运行过   false表示已运行过
         */
        public static boolean IsRun(Context context){
            String news = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
            String old =  SPUtils.getString(context,"date","0000-00-00");
            if(!news.equals(old)){
                //存下时间
                SPUtils.putString(context,"date", news);
                Timber.v("===今天==="+news);
                return true;
            }
            return  false;
        }
    

    累计计算:每过10秒写入下缓存

    if (TimeUtils.IsRun(this)) {
                handler.sendEmptyMessageDelayed(1, 10000)
            }
      private var stayTime: Int = 0
        private var handler = object : Handler(Looper.getMainLooper()) {
            override fun handleMessage(msg: Message) {
                super.handleMessage(msg)
                when (msg.what) {
                    1 -> {
                        if (stayTime >= 5400) {
                            checkinpresenter.getCheckin()
                            return
                        }
                        stayTime += 10
                        SPUtils.putInt(this@HomeActivity, "staytime", stayTime)
                        sendEmptyMessageDelayed(1, 10000)
                    }
                }
            }
        }
    

    记得告诉服务器后将累计时间设置为0,第二天才能用

    相关文章

      网友评论

          本文标题:Android每天累计时长只执行一次任务

          本文链接:https://www.haomeiwen.com/subject/advqkdtx.html