我在两个类中都进行了测试,但是HandlerThread
类中存在滞后。我将许多任务发送到队列,并且Executors.newFixedThreadPool(1)
的工作效果更好。
为什么?
这项工作正常(如果我发布20-30个任务):
private static ExecutorService executorService= Executors.newFixedThreadPool(1);
public static void logd(String str) {
executorService.submit(WriteLogToFile.getTaskFor(str));
}
这会导致UI出现滞后(如果我发布20-30任务, 我添加的任务越多,UI中的滞后时间就越长(冻结)):
private static HandlerThread handlerThread= new HandlerThread("BLABLA");
private static Handler handler;
static{
handlerThread.start();
handler=new Handler(handlerThread.getLooper())
}
public static void logd(String str) {
handler.post(WriteLogToFile.getTaskFor(str));
}