Advertisement

Android的Handler知识点!

阅读量:

Looper死循环为什么不会导致线程卡死

1.作为一个正常运行的应用程序,其自身不应主动终止运行过程,因此必须依赖Looper的持续循环机制以维持应用的活跃状态

2.为何不会出现卡顿现象,首先需要明确此处所指的卡顿即为ANR(Application Not Responding)

ANR的发生是由于应用在规定时间内未能作出响应所引起的(

InputDispatching Timeout:若在5秒内未能响应屏幕触摸事件或键盘输入事件、

BroadcastQueue Timeout :当执行前台广播(BroadcastReceiver)的onReceive()函数时,在10秒内未能完成处理,而后台广播则为60秒、

Service Timeout :前台服务在20秒内,后台服务在200秒内未能完成执行、ContentProvider Timeout :

ContentProvider的publish操作在10秒内未完成),

_然而,在Looper的循环过程中,当msg.next被调用时,若主线程的消息队列中没有待处理的消息,则主线程会在loop函数中的queue.next()方法里被阻塞,并进入nativeP

全部评论 (0)

还没有任何评论哟~