ANR原理

版权声明:有些文章写的很随意,那是仅作为个人记录的文章,建议直接关掉,多看一秒亏一秒 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

https://blog.csdn.net/u013771867/article/details/78484470

http://rayleeya.iteye.com/blog/1963408

猜你喜欢

转载自blog.csdn.net/qq_36523667/article/details/82118546
ANR
今日推荐