zoukankan      html  css  js  c++  java
  • 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参数
        封装代码片段
  • 相关阅读:
    如何使用C++构建一个极坐标系?
    归一化 [a] 到 [b] 区间
    ffmpeg 如何转换 rgb 图片到 yuv420p?如何使用 C 语言实现 rgb24 如何转换 yuv420p ?
    如何写一个通用的网络包?
    jenkins 配置参数为tag
    jmeter函数助手digest使用简介
    RD-T: 3540 Front Impact Bumper Model
    Listary软件的使用
    Adams各种材料的接触力参数
    Spring 使用构造方法注入方式
  • 原文地址:https://www.cnblogs.com/vijay/p/3539504.html
Copyright © 2011-2022 走看看