《Android应用性能优化》 第5章 多线程和同步
1、DDMS中可以看见的系统线程(Andorid3.1的Galaxy Tab 10.1为例):
main
HeapWorker 执行finalize函数和引用对象清理
GC Garbage Collector垃圾收集
Signal Catcher 捕捉Linux信号进行处理
JDWP Java Debug Wire Protocol 调试协议服务
Compiler JIT compiler 即时编译器
Binder Thread #1 Binder通讯
Binder Thread #2
2、Thread
Thread对象,也就是Java定义的Tread类的实例。是自己带有调用栈的执行单位
典型错误:调用run(),而不用start() 这会让Thread / 或Runnable对象的run()方法,在当前线程中被调用执行。没有产生新线程
3、改变线程优先级的方法
(1)Thread的优先级从1 到10
Thread.setPriority()可以
Thread thread = new Thread("thread name"){ @override public void Runnable(){ } } thread.setPriority(Thread.MAX_PRIORITY);//最高优先级 (比UI线程高) thread.start();
MIN_PRIORITY(1)
NORM_PRIORITY(5)——默认优先级,如果未指定优先级,会使用默认优先级
MAX_PRIORITY(10)
如果应用设置的线程优先级超出取值范围(1—10),会抛出 IlegalArgumentException异常
(2)另一种方式是使用android.os 包里的Process.setThreadPriority()
它基于Linux的优先级,从 -20(最高)到 19(最低)
定义了8个优先级:
THREAD_PRIORITY_AUDIO (-16)
THREAD_PRIORITY_BACKGROUND (10)
THREAD_PRIORITY_DEFAULT (0)
THREAD_PRIORITY_DISPLAY (-4)
THREAD_PRIORITY_FOREGROUND (-2)
THREAD_PRIORITY_LOWEST (19)
THREAD_PRIORITY_URGENT_AUDIO (-19)
THREAD_PRIORITY_URGENT_ DISPLAY (-8)
还可以使用Process.THREAD_PRIORITY_LESS_FAVORABLE (+1) 和 Process.THREAD_PRIORITY_LESS_FAVORABLE (-1)
如想把线程优先级设置的比默认高。则可以用(THREAD_PRIORITY_DEFAULT + THREAD_PRIORITY_LESS_FAVORABLE)
用这种方式,而不是你直接+1、 -1,是因为+1有时候意味着提高优先级,有时则是降低优先级。
注:不要混用Thread.setPriority 和 Process.setThreadPriority。因为Thread和Linux中的优先级定义不同。
注:改变线程优先级必须非常小心。增加优先级可能加快这个线程的人物执行速度,但会对别的线程造成负面影响,影响整体体验。
可以考虑 优先级老化算法。
再次强调:后台线程更新用户界面,必须反馈给主线程处理,View的方法只能在UI线程中调用。
"原子操作(atomic operation)是不需要synchronized",这是Java多线程编程的老生常谈了。
所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。
《Android应用性能优化》 第5章 多线程和同步的更多相关文章
- Android应用性能优化(转)
人类大脑与眼睛对一个画面的连贯性感知其实是有一个界限的,譬如我们看电影会觉得画面很自然连贯(帧率为24fps),用手机当然也需要感知屏幕操作的连贯性(尤其是动画过度),所以Android索性就把达到这 ...
- 包建强的培训课程(9):Android App性能优化
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- Android开发性能优化总结(一)
安卓开发应用首先要讲究良好的用户体验,如果一款软件卡顿现象严重,不流畅,经常崩溃,那么将给用户带来极不良好的体验,从而损失用户. 在实际开发和学习中,我总结了一下关于安卓性能的优化,供大家参考交流. ...
- Android客户端性能优化(魅族资深工程师毫无保留奉献)
本文由魅族科技有限公司资深Android开发工程师degao(嵌入式企鹅圈原创团队成员)撰写,是degao在嵌入式企鹅圈发表的第一篇原创文章,毫无保留地总结分享其在领导魅族多个项目开发中的Androi ...
- Android APP 性能优化的一些思考
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...
- Android app 性能优化的思考--性能卡顿不好的原因在哪?
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...
- android app性能优化大汇总
这里根据网络上各位大神已经总结的知识内容做一个大汇总,作为记录,方便后续“温故知新”. 性能指标: (1)使用流畅度: 图片处理器每秒刷新的帧数(FPS),可用来指示页面是否平滑的渲染.高的帧率可以 ...
- Android应用性能优化系列视图篇——隐藏在资源图片中的内存杀手
图片加载性能优化永远是Android领域中一个无法绕过的话题,经过数年的发展,涌现了很多成熟的图片加载开源库,比如Fresco.Picasso.UIL等等,使得图片加载不再是一个头疼的问题,并且大幅降 ...
- 《Android应用性能优化》2——内存、CPU、性能测评
4.高效使用内存 4.1 说说内存 Android设备的性能主要取决于以下三因素: CPU如何操纵特定的数据类型: 数据和指令需占用多少存储空间: 数据在内存中的布局 4.2 数据类型 int和lon ...
- (转) Android开发性能优化简介
作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...
随机推荐
- Android 6.0运行时权限第三方库的使用-----RxPermissions
运行时权限的讲解在前一篇博客已经算是说的比较清楚了,这里就不说了,如果对6.0这个新特性不是很了解的朋友建议先看看(地址:http://blog.csdn.net/qq_33923079/articl ...
- css开发素材网址
1.border-collapse 为表格设置合并边框模型 2.border-spacing border-spacing 属性设置相邻单元格的边框间的距离 backface-visibility:h ...
- DecimalFormat数据格式函数
DecimalFormat数据格式函数 class FormatDemo2{ public void format(String pattern, double value) { DecimalFor ...
- Wannafly挑战赛4 B,小AA的数列
题意:求子区间异或和,要求区间长度在l到r之间,并且为偶数 题解:对于每一位算贡献,可以分奇偶来记录,计算的时候只加上奇偶性相同的就保证了为偶数,从大于l的点开始每次++,从大于r的点每次--,记录二 ...
- Windows 运行中的命令
辅助功能选项 access.cpl 添加硬件向导 hdwwiz.cpl 添加或删除程序 appwiz.cpl 管理工具 control admintools 自动更新 wuaucpl.cpl Blue ...
- tableau 常识积累
没怎么在业务系统中使用过,所以需要好好积累.看起来很简单的东西都需要慢慢来用.下了一份它的官方文档10.3版本的.公司网络限制,不能去它官网学习.只有下班时间了. 先说一个,有时候度量值它和HANA类 ...
- /var/adm/wtmp文件太大该怎么办?
/var/admin/wtmp文件记录所有用户的登陆信息,随着时间会增长到很大,/var/adm/wtmp文件太大该怎么办呢?先来看看/var/adm/wtmp文件的属性:testterm1:/#ls ...
- InputStream与String,Byte之间互转
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
- CodeForces - 682E: Alyona and Triangles(旋转卡壳求最大三角形)
You are given n points with integer coordinates on the plane. Points are given in a way such that th ...
- QQ帐户的申请与登陆(25 分)
实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数N(≤),随后给出N行指令.每行指令的格式为:“命令符(空格)QQ号码( ...