如下 我的需求是用户停留于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()中作一个判断来决定是否执行计时器功能









网友评论