Android(性能)

■ 数据传输

对象和字节流之间的转换

为什么要转? 持久化(装逼说法,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。

 

 

  

 

posted @ 2016-07-12 14:49  mlrs  阅读(134)  评论(0编辑  收藏  举报