前言:Android 异步任务&多线程 技术点概述:

ANR与异步任务:ANR为Android特有耗时报错机制,因为ANR&性能考虑,需要处理掌握 异步任务与多线程。

Thread+Runnable+主Looper handler:Thread处理异步耗时,并将结果通过消息发送给主线程Looper轮询

Thread+Runnable+结合View.post|Activity.runOnUIThread:Handler.sendMessage改用View.post|Activity.runOnUIThread

AsyncTask:基于Executor框架进行的封装,嵌入了线程池,实现异步任务和 子线程&主线程之间的通信apis

HandlerThread:集成了Looper+MessageQueue的Thread子类,处理异步轮询消息队列

IntentService:嵌入了HandlerThread的service子类,用于异步后台任务的service场景

AsyncQueryHandler:用于执行ContentProvider异步CRUD操作

TaskExecutor:自定义线程池异步任务,参照:https://github.com/caobaokang419/WeatherApp

 

6.1 ANR与异步任务


ANR是Android系统对程序无响应的异常响应,从Android系统的角度来看,发生ANR的原因主要有三个方面:

1.        Activity/Fragment在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸);

2.        BroadcastReceiver在10秒内没有执行完毕;

3.        Service的生命周期方法中有20s以上耗时。

从开发编码的角度来看,主要可能发生的场景包括:

l  耗时的网络访

更多相关文章

  1. Android中线程同步之Mutex与Condtion的用法
  2. android 计时器线程
  3. Android SQLite是线程安全的吗?
  4. Android 进程和线程
  5. Android 子线程中更新UI
  6. Android 线程同步 ConditionVariable的用法
  7. FFmpeg In Android - tutorial-4-Spawning Threads创建线程
  8. Android学习笔记(6)————Android的线程与进程
  9. android jni 多线程编程 join thread

随机推荐

  1. widget ----ViewGroup~~~
  2. 【android系统问题】呼叫状态变化
  3. android 开机启动广播 BOOT_COMPLETED
  4. Android Framework层如何截获按键消息
  5. Android 珍藏(一)
  6. Android左右滑动实现Activity切换类 (整
  7. Android Shader应用开发之霓虹闪烁文字效
  8. Android camera 竖直拍照 获取竖直方向照
  9. Android实现扩展Menu的方法
  10. Android 依赖注入