android性能优化



栈 Stack
:存放基本类型的数据和对象的引用..但对象本身不存放在栈中,而是存放在堆中.
一个类的实例消耗大约15字节的内存.


堆 Heap
:堆内存用来存放由new 创建的对象和数组.在堆中分配的内存,由Java虚拟机自动垃圾回收来(GC)管理.




静态存储区域 static Filed
:Java 在内存中专门划分了一个静态存储区域来管理.


常量池 Constant Pool

: 就是该类型所用到的常量的一个有序集合.


Tips:

1,对常量使用 static 修饰符.
2,使用静态方法,静态方法会比普通方法提高 15%左右的访问速度.
3,减少成员变量.可以局部,就不要成员.
4,减少不必要的对象,使用基础类型会比使用对象更加节省资源.
5,尽量不要使用 枚举,少用迭代器
6,对于,Cursor,Receiver,Sensor,File 等对象,注意创建回收,注册和销毁关闭.
7,避免使用 IOC 框架,大量的反射依然会带来性能的下降.
8,使用 RenderScript,OpenGL 来进行非常复杂的绘图操作.
9,使用 SurfaceView 来替代 View 进行大量,频繁的绘图操作.

10,尽量使用视图缓存.而不是每次都执行 inflate().来剖析视图.



Android 还有一些性能优化的方法:
●  首先内存方面,可以参考 Android 堆内存也可自己定义大小 和 优化Dalvik虚拟机的堆内存分配
 
●  基础类型上,因为Java没有实际的指针,在敏感运算方面还是要借助NDK来完成。Android 123提示游戏开发者,这点比较有意思的
是Google 推出NDK可能是帮助游戏开发人员,比如OpenGL ES 的支持有明显的改观,本地代码操作图形界面是很必要的。
 
●  图形对象优化,这里要说的是Android上的Bitmap对象销毁,可以借助recycle()方法显示让GC回收一个Bitmap对象,通常对一个
不用的Bitmap可以使用下面的方式,如
 
if(bitmapObject.isRecycled()==false) //如果没有回收  
         bitmapObject.recycle();   
 
●  目前系统对动画支持比较弱智对于常规应用的补间过渡效果可以,但是对于游戏而言一般的美工可能习惯了GIF方式的统一处理,
目前Android系统仅能预览GIF的第一帧,可以借助J2ME中通过线程和自己写解析器的方式来读取GIF89格式的资源。
 
● 对于大多数Android手机没有过多的物理按键可能我们需要想象下了做好手势识别 GestureDetector 和重力感应来实现操控。通
常我们还要考虑误操作问题的降噪处理。


你可能感兴趣的:(android,技术,经验分享)