android 手机性能优化
2016-06-28 17:54:15 feitian_666 阅读数 301

1.http用gzip压缩,设置连接超时时间和响应超时时间

http请求按照业务需求,分为是否可以缓存和不可缓存,那么在无网络的环境中,仍然通过缓存的httpresponse浏览部分数据,实现离线阅读。

2.listview 性能优化

1).复用convertView

在getItemView中,判断convertView是否为空,如果不为空,可复用。如果couvertview中的view需要添加listerner,代码一定要在if(convertView==null){}之外。

2).异步加载图片

item中如果包含有webimage,那么最好异步加载

3).快速滑动时不显示图片

当快速滑动列表时(SCROLL_STATE_FLING),item中的图片或获取需要消耗资源的view,可以不显示出来;而处于其他两种状态(SCROLL_STATE_IDLE 和SCROLL_STATE_TOUCH_SCROLL),则将那些view显示出来

3.使用线程池,分为核心线程池和普通线程池,下载图片等耗时任务放置在普通线程池,避免耗时任务阻塞线程池后,导致所有异步任务都必须等待

4.异步任务,分为核心任务和普通任务,只有核心任务中出现的系统级错误才会报错,异步任务的ui操作需要判断原activity是否处于激活状态

5.尽量避免static成员变量引用资源耗费过多的实例,比如Context

6.使用WeakReference代替强引用,弱引用可以让您保持对对象的引用,同时允许GC在必要时释放对象,回收内存。对于那些创建便宜但耗费大量内存的对象,即希望保持该对象,又要在应用程序需要时使用,同时希望GC必要时回收时,可以考虑使用弱引用。

7.超级大胖子Bitmap

及时的销毁(Activity的onDestroy时,将bitmap回收)

设置一定的采样率

巧妙的运用软引用

drawable对应resid的资源,bitmap对应其他资源

8.保证Cursor 占用的内存被及时的释放掉,而不是等待GC来处理。并且 Android明显是倾向于编 程者手动的将Cursor close掉

9.线程也是造成内存泄露的一个重要的源头。线程产生内存泄露的主要原因在于线程 生命周期的不可控

10.如果ImageView的图片是来自网络,进行异步加载

11.应用开发中自定义View的时候,交互部分,千万不要写成线程不断刷新界面显示,而是根据TouchListener事件主动触发界面的更新
 
2017-03-09 21:01:35 keepfocusonjava 阅读数 70

Android 性能优化

标签(空格分隔): 知乎live 张明云


* APK性能优化*
1)GPU过度绘制

  • 布局优化
  • 流畅度优化
    原因
    1. 内存抖动(频繁gc,线程阻塞)。量化:montior图形锯齿状
    2. 布局过度绘制(开发者选项打过度绘制调试开关)
    3. 系统内存不足
    4. ui线程耗时操作
      解决
      1.for循环中减少局部变量的申请
      2.
      • ①merge标签,根部局使用,替代frameLayout。
      • ②使用标签做占位,不用用view。
      • ③去掉window的默认背景,自定义主题里面去掉window背景,onDrawWindowBackgrou nd = null。
      • ④viewstub懒加载,只能加载一次哟。
      • ⑤HierarchyViewer用来分析各种layout时间。

总结:这位讲师后面主要是各种引子,教会了我们各种检测性能的工具。具体内容没说多少,然后分享了很多blog,需要后面深究,单就live来讲,干货不多,给个60分。

2014-09-17 19:52:02 qq609600523 阅读数 449

遇到的问题:

1)ANR

2)ListView 卡顿,不流畅

3)Activity启动慢

4)动画不流畅,启动前卡顿

5)自定义view启动慢

6)  OOM

7)数据库大量操作

8)长时间运行后,程序变慢


基本思想:

1)语言层解决问题,语法上提高性能

2)合理的数据结构和算法

3)布局优化,布局深度控制

4)工作线程与UI线程分离

5)合理的缓存机制

6)NDK合理使用

7)优化的SQL语句

8)使用工具,分析问题找出瓶颈


优化工具:

view优化工具:hierarchy view

代码优化工具:Lint

内存、方法优化工具:Heap、TraceView

Dalvik日志分析,logcat日志分析

Android手机开发者选项的“过度绘制”选项。

2018-03-21 01:55:22 zhangkaiyazky 阅读数 82

安卓程序运行在手机端,用户更加注重程序的流畅度,因此程序的流畅性是安卓程序性能的一个重要指标。程序员在编写程序时需要注意一些常用的技巧以提高程序的流畅性。以下是个人总结的一些开发经验,如有疏漏还望指出。

一 View的优化

1) 降低View树的高度,即减少View的层级嵌套,使用RelativeLayout替代LinearLayout。
2) 使用include或者merge标签,将布局包含进来。
3) 使用ViewStub,一些布局文件在正常情况下不会显示出来,可以使用ViewStub使其在使用时在加载。
4) 不要在onDraw()等类似绘制函数中执行大量操作或者相对耗时的任务,影响View的流畅度。
5) 不要在onDraw()类似的频繁被调用刷新的函数中创建局部对象,这会耗用大量内存。
6) 避免过度绘制。
出现过度绘制主要是由于View的backgroud重复绘制。首先Window本身就有自己的background,如果要自定义自己的background,得记得把window的background设为null。
7) ListView的优化。
ListView使用ViewHolder实现View的复用,并且不要在getView中执行耗时操作。

二 内存泄露

严格检查程序是否存在内存泄露的情况。关于常见内存泄露场景可以查看另一篇文章安卓面试题(进阶篇)

三 优化系统的响应速度

1) 避免在主线程中执行相对耗时的操作,严重时甚至会引发ANR异常。
2) 当存在多线程并发情况下注意对于同步操作的协调,同步代码块会影响并发的效率。
3) 多线程场景,需要使用线程池。

四 代码优化

1) 合理使用static关键字
static数据的读取速度比一般数据读取效率高。因此,在合理范围内使用static修饰可以提高程序执行效率。
2) 使用增强for循环
优先使用增强for循环通常情况下会获得更高的效率
注:一种情况例外,即对ArrayList进行遍历时,使用普通的for循环效率要更高。
3) float类型的谨慎使用
浮点型处理速度大概比整型数据处理速度慢两倍,所以如果整型可以解决的问题就不要用浮点型。
4) 避免创建过多的占用资源较多的对象,可以考虑单例模式实现。
5) 少用枚举,枚举占用空间比整型要大。
6) 适当的使用软引用或者弱引用。合理的使用软引用或者弱引用可以使GC能够及时回收资源。
7) 尽量采用静态内部类,静态内部类可以避免潜在内部类引发内存泄露的问题。

五 资源释放

1) Bitmap的回收,Bitmap占有系统资源较大,应在使用完后及时释放。
2) Cursor的释放。

六 其他

1) 使用内存缓存和磁盘缓存


2015-01-21 10:58:40 u011319826 阅读数 257

Android 性能优化的文章,非常不错。

文章地址:http://hukai.me/android-performance-patterns/

文章打不开,可以看视频。

视频地址:https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE

Android 性能优化

阅读数 34

性能优化一:App运行流畅性,不卡顿二:省电,省流量三:稳定,不闪退四:App包尽量小卡顿原因Android应用启动慢,使用时经常卡顿,是非常影响用户体验的,应该尽量避免出现:1:UI的绘制,页面嵌套复杂,刷新不合理,2:数据量大,一种是数据在主线程处理,数据量过大,导致内存溢出.引起卡顿渲染在屏幕上显示,其实要经过一系列的过程,Android应用程序把经过测量、布...

博文 来自: qq_35957672

Android 性能优化

阅读数 86

布局优化布局文件中层级不能过多,过多会导致遍历时间成几何倍增长,能减少View的数量尽量减少,比如androidstudio提示一个图片一个文字,最好就使用一个TextView使用include复用布局、merge减少不必要的ViewGroup、使用ViewStub在需要显示得时候再加载可以打开开发者选项观看GPU渲染速度,中间的绿线表示一帧耗时16mm(一秒60帧)内存优化防止...

博文 来自: qq_22194581

Android 性能优化

阅读数 57

1、优化布局多数开发者人为使用基本布局结构会产生高效的布局性能,其实这个想法是不完全正确。我们每一个添加到应用的控件和布局,都需要初始化,布局,绘制,这些多是需要时间降低显示速度。另外,嵌套多个使用layout_weight属性的Linearlayout实例会花费更大的代价,因为每一个布局都要测量两次,如果这种布局使用在Listview或者GrideView中,渲染是更耗时。在布局优化中,And...

博文 来自: guoyanfang_yuge

Android 性能优化

阅读数 472

原文链接 http://www.iteye.com/topic/1125920性能提升有两个编写有效代码的基本规则:1:不要做你不需要做的。2:不分配没必要分配的内存。 应该尽量避免创建多余的对象,比如:1:在一组输入数据中抽取字符串时,尝试返回源数据的子串,而非创建一个副本2:如果你有一个返回String的方法,而且你知道它的结果将会一直被追加到

博文 来自: zh_m8

Android 性能优化

阅读数 4

这里收集了一些关于如何优化Android代码的文章,感谢前辈们写出的好文章,让我们获取知识如此的轻松愉悦。Google的Android性能模式胡凯的Android性能优化专题Android性能优化典范-第1季Android性能优化之渲染篇Android性能优化之运算篇Android性能优化之内存篇Android性能优化之电量篇Andro...

博文 来自: weixin_33775572
没有更多推荐了,返回首页