Android线程与ANR

本人博客原文

第一部分 Android线程
Android线程模型
Android的每个进程有一个称为“ main ”主线程(也称UI线程)的线程。它除了负责所有事件的分发和处理,还负责4大组件的生命周期函数的调用。
更多内容请参考《 Android线程模型 》和《 Looper和Handler
如何确定当前线程
我们可以通过打印代码的调用层次来确定当前线程。
更多内容请参考《  Android中打印代码的调用层次
Handler技术
Handler用于异步消息的处理。默认情况下Handler与其创建者处于同一线程, 如果Handler里面做耗时的动作,其对应线程自然会阻塞。
更多内容请参考《  关于Handler技术 》和《 Looper和Handler
AsyncTask技术 
引入AsyncTask的目的是任务在主线程之外运行,而回调方法是在主线程中执行,以避免了使用Handler带来代码看上去非常臃肿的麻烦.
关于此的详细内容请阅读《  AsyncTask简介
ThreadLocal简介
ThreadLocal的目的就是为每一个使用ThreadLocal的线程都提供一个值,让该值和使用它的线程绑定,当然每一个线程都可以独立地改变它绑定的值。
更多请参考《  ThreadLocal简介
第二部分 什么是ANR
在Android中,系统会监视那些反应不够迅速的应用。如果系统发现某个应用程序反应太慢,它会显示一个叫做Application Not Responding (ANR)的对话框给用户。用户可以选择等待该应用程序让它继续,也可以选择强行结束该应用程序。虽然用户可以选择等待该应用程序让它继续,但是用户其实是非常不喜欢出现该对话框(ANR提示框)
更多的内容请参考《 关于ANR的官方建议
第三部分 对付ANR的N种武器
关于此请参考《 Android中对付ANR的N种武器
结束

你可能感兴趣的:(Android线程与ANR)