1、工具类,调用系统的IdleHandler方法
package com.abbi.viewdemo;
import android.os.Looper;
import android.os.MessageQueue;
import java.util.LinkedList;
import java.util.Queue;
public class DelayTaskDispatcher {
private Queue<Task> delayTasks = new LinkedList<>();
private MessageQueue.IdleHandler idleHandler = new MessageQueue.IdleHandler() {
@Override
public boolean queueIdle() {
if(delayTasks.size() > 0){
Task task = delayTasks.poll();
if(task != null){
task.run();
}
}
return !delayTasks.isEmpty();
}
};
public DelayTaskDispatcher addTask(Task task){
delayTasks.add(task);
return this;
}
public void start() {
Looper.myQueue().addIdleHandler(idleHandler);
}
}
2、activity 处调用:
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
InjectManager.inject(this);
mBtn.setText(app_name);
mBtn.setBackgroundColor(color);
mBtn.post(new Runnable() {//其他方法获取线程处理事务,不能太耗时
@Override
public void run() {
}
});
Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() {
@Override
public boolean queueIdle() {
return false;
}
});
new DelayTaskDispatcher().addTask(new Task() {
@Override
public void run() {
Log.d("abbi", "DelayTaskDispatcher 1 run");
}
}).addTask(new Task() {
@Override
public void run() {
Log.d("abbi", "DelayTaskDispatcher 2 run");
}
}).start();
}