Android网络课程笔记-----多线程

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参数
    封装代码片段

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。