activity中设置计时器,每隔一段时间做什么事情

2019-08-26  本文已影响0人  番茄tomato

如下 我的需求是用户停留于mainactivity时,每五分钟进行一次网络请求,刷新页面。我封装了一个函数来实现,在initData中调用即可,需要修改的只有2和12行。
关于生命周期:
https://www.jianshu.com/p/ee6a0e45bbec

   public void initTimeRefresh() {
        int time = 5 * 60 * 1000;//设置时间 这里是五分钟
        @SuppressLint("HandlerLeak") final Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                // handler处理消息
                if (msg.what == 0) {
                    if (starttime) {//判断页面是否是running
                      //这里做自己需要的事情
                        Log.d("主页面订单数量", "发送一次请求:")
                        mPresenter.getOrderNumber();
                    } else {
                        Log.d("主页面订单数量", "页面不可见,暂停刷新");
                    }
                }
            }
        };

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                // 定义一个消息传过去
                Message msg = new Message();
                msg.what = 0;
                handler.sendMessage(msg);
            }
        }, time, time);//设置第一次执行时间为5分钟后,每5分钟重复一次
    }

关于用户停留于此界面这个事情,其实就是MainActivity生命周期处于running时,也就是onResume()函数被执行后,所以设置一个布尔变量boolean starttime;,在onResume()中赋值为true,在onPause()中赋值为false,然后
initTimeRefresh()中作一个判断来决定是否执行计时器功能

上一篇 下一篇

猜你喜欢

热点阅读