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(Runnable action)  //立即执行post
        handler.postDelay(action,time)  //在某个时间间隔后执行
     handler.postAtTime(action,time) //在未来某个时间执行
    
    深入理解runnable参数
    封装代码片段
posted @ 2014-02-07 14:44  VIJAY-YAN  阅读(164)  评论(0编辑  收藏  举报