美文网首页HTTP
MessageQueue.IdleHandler线程空闲时执行的

MessageQueue.IdleHandler线程空闲时执行的

作者: a9d59df7fe05 | 来源:发表于2017-10-26 20:28 被阅读10次

先看IdleHanlder接口定义:

/*** Callback interface for discovering when a thread is going to block waiting for more messages.*/

public static interface IdleHandler{

/**

* Called when the message queue has run out of messages and will now

* wait for more.  Return true to keep your idle handler active, false

* to have it removed.  This may be called if there are still messages

* pending in the queue, but they are all scheduled to be dispatched

* after the current time.

*/

bool eanqueueIdle();

}

Activity的生命周期中并没有界面绘制完成的回调,而根据文档我们知道,这个接口就可以当成是

界面绘制完成的回调,我们可以这样用

Looper.myQueue().addIdleHandler(newMessageQueue.IdleHandler() {

@Override public boolean queueIdle(){

//dosomething

return false;

}

});

对于有Looper的线程也可以用该接口在空闲时执行相关代码,比如HandlerThread:

HandlerThread handlerThread=new HandlerThread("test");

try{

      Field field = Looper.class.getDeclaredField("mQueue");

      field.setAccessible(true);

      MessageQueue queue = (MessageQueue) field.get(handlerThread.getLooper());

      queue.addIdleHandler(newMessageQueue.IdleHandler() {

               @Override

               public boolean queueIdle(){//dosomething

               } 

          return true;

          } });

}catch(Exception e) {

 e.printStackTrace();

}

相关文章

  • MessageQueue.IdleHandler线程空闲时执行的

    先看IdleHanlder接口定义: /*** Callback interface for discoverin...

  • MessageQueen

    MessageQueue.IdleHandler可以用来在线程空闲的时候,指定一个操作;有点类似Handler.p...

  • 关于MessageQueue.IdleHandler及使用方法

    MessageQueue.IdleHandler可以用来在线程空闲的时候,指定一个操作;有点类似Handler.p...

  • 线程池newScheduledThreadPool使用

    概述 newScheduledThreadPool是一个可以周期性执行任务的线程池 可以看到线程池的线程空闲时间为...

  • 创建优先级低的主线程任务

    1.创建优先级低的主线程任务,它只会在主线程空闲时才会执行。 Looper.myQueue().addIdleHa...

  • 并发工具-CountDownLatch

    概述 允许一个或者多个线程等待其他的线程执行 场景1:A线程必须在B线程或者更多线程执行完才能执行(线程先后执行)...

  • iOS开发-三种多线程适用场景

    1>无论使用哪种方法进行多线程开发,每个线程启动后并不一定立即执行相应的操作,具体什么时候由系统调度(CPU空闲时...

  • java线程池

    线程VS线程池 普通线程使用 创建线程池 执行任务 执行完毕,释放线程对象 线程池 创建线程池 拿线程池线程去执行...

  • SimpleDateFormat线程不安全验证

    上述代码执行后出现大量空指针异常和false的结果。 证明SimpleDateFormat确实不是线程安全的。

  • 秋叶吟

    闲时光阴闲时事 空留时光空流过 蝶飞蝶舞蝶满园 ...

网友评论

    本文标题:MessageQueue.IdleHandler线程空闲时执行的

    本文链接:https://www.haomeiwen.com/subject/vagldxtx.html