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参数
        封装代码片段
  • 相关阅读:
    实验四 决策树算法及应用
    实验三 朴素贝叶斯算法及应用
    实验二 K-近邻算法及应用
    实验一 感知器及其应用
    实验三 面向对象分析与设计
    实验二 结构化分析与设计
    实验一 软件开发文档与工具的安装与使用
    个人作业三-ATM管理系统
    个人作业二-举例分析流程图与活动图的区别与联系
    个人作业-四则运算题目生成程序
  • 原文地址:https://www.cnblogs.com/vijay/p/3539504.html
Copyright © 2011-2022 走看看