Android 常用的内存优化方法

来源:互联网 发布:淘宝买家最高等级是谁 编辑:程序博客网 时间:2024/04/28 17:07

常用的内存优化方法:

         代码优化

         Bitmap优化

         ListView优化

         界面更新及线程优化

        数据库优化

 

 

       代码优化:

                    尽量减少对某些资源和对外象的长期的引用,

                      1、由于我们程序的失误,长期保持某些资源(如Context)的引用,造成内存泄露,资源造成得不到释放。应该尽量避免static成员变量引用资源耗费过多的实例,比如Context。

                      2、Context尽量使用Application Context,因为Application的Context的生命周期比较长,引用它不会出现内存泄露的问题。

                      3、 使用WeakReference代替强引用。比如可以使用WeakReference mContextRef

        Bitmap优化:

                     1、及时的销毁。

                 虽然,系统能够确认Bitmap分配的内存最终会被销毁,但是由于它占用的内存过多,所以很可能会超过java堆的限制。因此,在用完Bitmap时,要及时的recycle掉。recycle并不能确定立即就会将Bitmap释放掉,但是会给虚拟机一个暗示:“该图片可以释放了”。
                2、设置一定的采样率。

有时候,我们要显示的区域很小,没有必要将整个图片都加载出来,而只需要记载一个缩小过的图片,这时候可以设置一定的采样率,那么就可以大大减小占用的内存。如下面的代码:

               3、巧妙的运用软引用(SoftRefrence)

               4、图片尽量使用9path图片

               5、颜色配置如果对图片要求质量高则设置ARGB_8888(一个像素4个字节),要求一般则设置为ARGB_4444(一个像素2个字节),,要求较低则使用ALPHA_8(一个像素1个字节),

       ListView优化

               使用viewHolder减少对象的创建

               使用convertView使用已创建过的对象

               尽量使用分批加载或分页加载

               在快速滑动的时候不更新当前条目的内容(根据listView的onScrollView

               图片使用三级缓存策略

       界面更新及线程优化

                    不要在主线程中做耗时的操作,如果有耗时的操作需要另开线程

                    在应用中不要开太多的线程,线程太多无法控制线程的生命周期,导致内存泄漏

                    尽量使用线程池

          数据库优化

                     在使用完数据库以后尽量关闭连接

                     使用索引增加查询速度

                      尽量使用联合查询 避免多次查询

                      尽量使用事务

 

  

 

 

 

0 0
原创粉丝点击