版权声明:有些文章写的很随意,那是仅作为个人记录的文章,建议直接关掉,多看一秒亏一秒 https://blog.csdn.net/qq_36523667/article/details/82118546
学习前,我的大体的了解是这样的:
有一个queue,里面是所有正在被监控的线程。
它是 优先队列,按剩余到期时间排序。
watch dog线程监视queue.head,休眠对应时间。
如果队列中 没有线程,就一直休眠,知道有新线程 插入,才会唤醒。
检测机制是,在activity、service、broadcast、contentprovider 初始化方法调用 前开始计时。watch dog线程会post一个消息到监控的线程的message queue中, 通过检测我们 post的消息是否被执行(具体是我们post的消息,内部有个boolean变量,用来判断执行了没),来判断是否超时了。
这和Linux、Okhttp的WatchDog很像。
后来看了下几篇文章,大概就是这样
https://www.jb51.net/article/132609.htm