方式1:执行单一定时器任务
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
mHandler.sendEmptyMessage(CONNECT_PLATFORM_START);
}
}, 2000);
方式2:执行多个定时器任务来实现Recycleview的批量更新
现在如下图所示,需要每隔三秒钟刷新Recycleview里面的数据,并且是每次只刷新三个条目。
private Timer timer = null;
private TimerTask task, taskS, taskB;
private int updateNumB = 1;//0上部分 1中间 2下部分
private int updateNumS = 3;//3上部分 4中间 5下部分.
timer = new Timer();
task = new TimerTask()
{
@Override
public void run()
{
Message message = new Message();
message.what = TIME_TASK;
handler.sendEmptyMessage(TIME_TASK);
}
};
taskS = new TimerTask() {
@Override
public void run() {
//updateMessage()方法用来指定刷新哪一部分的数据
updateMessage(updateNumS);
if(++updateNumS > 5){
updateNumS = 3;
};
}
};
taskB = new TimerTask() {
@Override
public void run() {
updateMessage(updateNumB);
if(++updateNumB > 2){
updateNumB = 0;
};
}
};
timer.schedule(task, 0, 3000);
timer.schedule(taskS, 200, 1000);
timer.schedule(taskB, 200, 5000);
public synchronized void updateMessage(int updateNum){
Message message = new Message();
message.what = TIME_TASK_UPDATE_ITEM;
message.arg1 = updateNum;
handler.sendMessage(message);
}
Handler handler = new Handler() {@Override public void handleMessage(Message msg) {
//Log.d(TAG, "--------------------------handleMessage");
super.handleMessage(msg);
switch (msg.what) {
case TIME_TASK:
{
//更新数据
refreshCallList();
break;
}
case TIME_TASK_UPDATE_ITEM:
{
// if(mAdapterS!=null &&mStatListItem.size()!=0)
// mAdapterS.notifyItemRangeChanged(0,2);
// Log.i("LGYLGY", "handleMessage: msg.arg1 "+msg.arg1);
int updateNum = msg.arg1;
if (updateNum == 0) {
mAdapterB.notifyItemRangeChanged(0, 3);
} else if (updateNum == 1) {
mAdapterB.notifyItemRangeChanged(3, 3);
} else if (updateNum == 2) {
mAdapterB.notifyItemRangeChanged(6, 3);
} else if (updateNum == 3) {
mAdapterS.notifyItemRangeChanged(0, 3);
} else if (updateNum == 4) {
mAdapterS.notifyItemRangeChanged(3, 3);
} else if (updateNum == 5) {
mAdapterS.notifyItemRangeChanged(6, 2);
}
// updateNum++;
// if(updateNum==5)updateNum = 1;
break;
}
default:
break;
}
}
};