Android(性能)

时间:2023-12-14 18:58:32

■ 数据传输

对象和字节流之间的转换

为什么要转? 持久化(装逼说法,JVM非运行的场合),他进程(装逼说法,其他机器JVM,不同的JVM)

Parcelable和Serializable

初衷:

Parcelable: Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,

这些数据仅在内存中存在,Parcelable是通过IBinder通信的消息的载体。

Serializable: 保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。

一个借助内存,一个借助IO.

■ UI

measure - layout - draw  减少层级 减少子控件数量

viewpaper 同时缓存的page数小于3.并且买个Page在显示时才去加载数据或者网络,避免预加载

图片decode成bitmap内存是成倍的,减小size是根本因素,让服务器提供不同方便率的图片是好的解决方案

线程池

业务上调整 控制网络请求频率

■ Bitmap

http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=498&extra=&page=2

法1

占用内存大小   width * height *  色彩格式(ARGB888=4) * scale(scale = 目标设备dpi/图片所在文件夹dpi)

法2

jpg图片无alpha通道 ARGB888的一般   alpha不需要的场合 (jpg吃cpu来解压缩)

法3

模糊处理

法4

索引位图  一个像素字节

android不支持 黑户

Skia 引擎支持

■ getView findViewByid

问题: findviewbyid的低效率

对策: 缓存。如何缓存,父view通过setTag来绑定ViewHolder,ViewHolder来缓存这些子view。

利用黄油刀组件,即在第一次创建ViewHolder时可以完成所有子控件的绑定

问题:BaseAdapter的getView (ListView例)

对策:先判断view是否为空,不空的场合直接利用该缓存着的view。