1. ANR(Activity is not responding)
Main线程(UI 主)
功能:1. 创建UI控件
2. 更新UI控件状态
3. 事件处理
限制: Main线程不建议有超过5s的事件
什么条件下出现ANR:
当用户输入事件超过5s没有得到系统响应
第二种出现ANR的情况:
广播接收者的onReceive()执行时间超过10s
解决方案(原则):
所有可能的耗时操作都要在子线程(work thread)中执行
常见耗时操作:
I/O:网络操作
SDcard
数据运算
3. 应用程序异常关闭对话框(FC force close)
原因:1. Error
OOM(outofmemoryError)
StackOverFlowError
2.
运行时异常RuntimeException
看日志log
ANR
在子线程执行耗时操作后,更新UI
耗时在子线程操作的结果发送到主线程
更新UI在Main线程
4. 如何将子线程的内容发送到Main线程
线程间通讯
Handler
1) 发送消息
handler.sendMessage()
2) 接收消息
5. 几个简单的解决FC的方法
思路:使代码段在Main线程执行的方法
1) runOnUiThread()
2) view.post()
view.postDelay()
3) handler.post()
handler.postDelay()
深入理解runnable参数
封装代码片段