1 UI线程正在响应另外的事件,当前事件被阻塞
2 当前事件在UI线程中处理,但由于耗时太长没有及时完成
3 broadcastReceiver超过10s响应时间
4 在service中执行耗时操作
典型场景:
UI线程进行网络请求、数据库操作、文件操作等,导致UI线程无法计算处理用户输入;
UI线程等待子线程释放某个锁,从而无法处理用户输入请求;
耗时的动画需要大量计算,导致CPU负载过重。
1 UI线程正在响应另外的事件,当前事件被阻塞
2 当前事件在UI线程中处理,但由于耗时太长没有及时完成
3 broadcastReceiver超过10s响应时间
4 在service中执行耗时操作
典型场景:
UI线程进行网络请求、数据库操作、文件操作等,导致UI线程无法计算处理用户输入;
UI线程等待子线程释放某个锁,从而无法处理用户输入请求;
耗时的动画需要大量计算,导致CPU负载过重。
Handler是Android中用于处理线程间通信的组件(常用于异步更新UI)
Thread是java中的线程类
HandlerThread是Thread的一个子类(谷歌封装的),在HandlerThread类中存在一个Looper对象,用于消息的取出和处理
在线程中处理消息时,如果不使用HandlerThread的时候,只使用Handler+Thread时,需要手动去调用Looper.prepare()和Looper.loop()。(如果一个线程要处理消息,那么它必须拥有自己的Looper,并不是Handler在哪里创建就可以在哪里处理消息。)