Android中关于主线程的理解
2014-06-25 10:44
295 查看
在Android中,四大组件运行在主线程中,在主线程中做耗时操作会导致程序出现卡顿甚至出现ANR异常,一个基本常识就是将耗时操作放到子线程中去处理,然后通过Handler回调到主线程。
但是有三点还需要注意:
1 因为四大组件运行在一个主线程中,那么若果当前界面在显示的时候,后台的activity仍有处理逻辑再运行的话,仍然会造成当前界面的卡顿;
2 通过Handler回调到主线程只是避免程序出现ANR的第一步,我们必须要注意handler中逻辑处理的耗时,如果我们将很多消息都扔给了handler,那么也会给主线程造成压力,导致程序运行卡顿;
3 四大组件、Handler都是在一个线程中,那么主线程在同一时刻不可能发送两个广播,换句话说就是若果能够保证所有的广播都是在主线程中发送,那么广播内部其实不需要加上对异步操作的处理。
错误之处,还请指正!
但是有三点还需要注意:
1 因为四大组件运行在一个主线程中,那么若果当前界面在显示的时候,后台的activity仍有处理逻辑再运行的话,仍然会造成当前界面的卡顿;
2 通过Handler回调到主线程只是避免程序出现ANR的第一步,我们必须要注意handler中逻辑处理的耗时,如果我们将很多消息都扔给了handler,那么也会给主线程造成压力,导致程序运行卡顿;
3 四大组件、Handler都是在一个线程中,那么主线程在同一时刻不可能发送两个广播,换句话说就是若果能够保证所有的广播都是在主线程中发送,那么广播内部其实不需要加上对异步操作的处理。
错误之处,还请指正!
相关文章推荐
- Android中关于“UI只能在主线程中更新”说法的理解
- 关于Android Webkit的Flash插件加载的一点理解
- android 中关于 activity 的一些理解
- [转载+实践理解]Android动画---如何正确使用平移动画(关于fillBefore和fillAfter的一点说明)(转载)
- Android应用开发中关于this.context=context的理解
- 关于android 签名系统的理解
- 关于android下audioflinger+alsa+a2dp+pcm+bluez+sbc编码理解
- 关于Android焦点的个人理解,希望大家来指正。
- Android 关于Service的几点理解
- 自己关于Android中Matrix的理解
- 关于android主线程不能访问网络异常NetworkOnMainThreadException
- 关于android Handler Message Looper的理解
- 关于android中JNI层的理解
- android中关于android:scaleType属性理解
- 关于Android中windowleaked异常的理解
- android 中关于 activity 的一些理解
- 关于android下audioflinger+alsa+a2dp+pcm+bluez+sbc编码理解
- Android基础:关于Dialog和Activity的style的深入理解
- 关于android中BaseAdapter的理解
- Android 关于内存信息中标题的理解,即Vss Rss Pss Uss