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参数
        封装代码片段
  • 相关阅读:
    .NET之API版本控制
    接口管理平台YApi
    .NET之WebAPI
    Hyperv安装Centos7
    nginx添加https模块
    基于centos8镜像,打包php的docker镜像
    jmeter生成HTML性能测试报告(转载)
    jmeter相关(转载)
    接口测试总结(转载)
    【解决了一个小问题】alert manager中的cluster.advertiseaddress参数是什么意思?
  • 原文地址:https://www.cnblogs.com/vijay/p/3539504.html
Copyright © 2011-2022 走看看