android开发中的一些思考
2016-03-19 12:15
260 查看
1.异步线程
问: 我们把耗时任务放在异步线程中执行,避免UI线程卡顿。假设是一核心CPU,开启三个线程。CPU以叶片轮询方式在线程中切换,子线程中睡眠10秒。打印log发现3个线程的优先级一样,获取到执行的机会也一样。UI线程必须16ms完成绘制任务,那么存不存在CPU在切换过程中而造成的卡顿现象?答:(经过现阶段水平思考,)存在。并行执行任务只是增加了UI线程的执行机会,不至于阻碍UI线程的进行。下面两个示例可以侧面应证。
比如让UI线程直接睡眠10s,那么必定会卡顿或者ANR。这就是开启子线程执行异步任务的意义。这从某种程度也可以说明手机CPU核心数越多越好。
开启n多线程,耗尽CPU资源,势必会造成UI线程卡顿,原因就是UI线程获得的执行机会少了,这也就是使用线程池的意义。
相关文章推荐
- Android Scroll分析
- Android使用Fiddler
- 【Android】21.1 画板资源
- Android Studio相关资料链接
- 5 个顶级 Android 开源库
- 【Android】第21章 2D图形和动画
- AndroidStudio打包步骤
- android pm命令实现
- ListView 去除黄色背景
- 1. Android Framework-Acitivty
- Android自定义Button结合PopupWindow和ListView实现顺序显示下拉菜单控件
- Android常用框架之Volley
- 安卓屏幕适应
- android开发之路10(文件的读写)
- Android多线程--Handler
- Android Studio 中使用assets目录读取失败的问题
- android“Binary XML file line # : Error inflating class” 什么二进制编译错误解决办法
- 【Android学习】动态文字闪动效果
- Android 输出XML
- Android AutoLayout全新的适配方式 堪称适配终结者