内存优化之RAM

在开发过程中,我们经常会遇到RAM不够用的问题,那么我们应该如何优化我们的App,使他占用的RAM更少呢?下面,介绍几个方法吧(也可以说是几个原则):
        一、尽量减少Service的使用:
        当你的app需要使用service来处理后台任务的时候,要保证当前的任务完成时,该service也要停止。另外,要注意的是,当停止这个service的时候,不要引起它的泄漏。
        当启动一个service之后,系统总会保持这个service处于运行状态。这样,就会占用大量的RAM。所以,app的运行效率就会因此降低。
        保留没有用的service最可怕的内存管理错误。所以,一定要牢记,没有必要使用service的时候就不用,用完了一定要记得将它销毁!!!!

       二、当界面变为不可见时,要记得释放内存:
       当用户跳转到其他界面时,并且当前界面不再可见的时候,要记得释放当前这个界面中的资源。
       当用户退出某个界面时,记得在你的activity中实现onTrimMemory()(api4.0及以上)这个回调方法。调用这个方法,系统会收集不需要的内

       三、当内存变少时,释放内存:
      在你的app运行过程中,当运行该app的设备所剩的RAM变得很少时,系统就会调用onTrimMemory()这个方法,这个方法中有几个参数,表示不同的状态。onTrimMemory()的具体使用,还请大家参加Android的开发文档吧,本人手懒,就不详细介绍啦。

      四、检查你所需要使用的内存:
      可以通过getMemoryClass()估计一下你的app可用的heap。当你的app所需要的内存超过了这个可用值时,好了内存溢出就出现了。
       这里有一个很特殊的方法,可以通过在manifest <application>标签中将largeHeap的属性值设置为true来请求更大的内存,主要注意的是,如果你采用了这种方法,那么当你想要获取可用内存时,就要使用 getLargeMemoryClass()
    不过由于每台机器的RAM是有限的,所以用这个还是小心吧,不需要用的时候还是不用了吧。


      五、避免由bitmap引起的内存浪费:
      
       bitmap还是很占内存的啊,当我们使用它的时候一定要小心。有几个需要注意的方法:
      1、不要直接使用这样会占用很大的内存,使用BitmapFactory.Options设置inSampleSize,根据手机屏幕大小来设置bitmap的大小这样做可以减少对系统资源的要求。
     2、缓存图像到内存,采用软引用缓存到内存,而不是在每次使用的时候都从新加载到内存; 
      3、采用低内存占用量的编码方式,比如Bitmap.Config.ARGB_4444比Bitmap.Config.ARGB_8888更省内存; 
     4、最后就是最重要的一点,当bitmap使用完之后一定要记得回收!!!


     六、使用优化过的数据容器
    尽量使用 SparseArraySparseBooleanArray,  LongSparseArray 等经过优化的容器类。通常来说HashMap的效率时比较低下的。


     七、小心使用抽象类(方法)
      适当的使用抽象类和方法能够使我们的代码更加灵活、易维护,但是这样会增加app的内存占用。所以,那些无关痛痒的东西,还是别抽象了吧。

     除了以上列举的方法之外还有一些其他的方法,比如:优化布局,尽量减少没有必要的layout嵌套,多次使用一个layout时,可以使用<include> 标签,根布局有时候可以使用<merge>标签等。
     先列举这么多,欢迎大家补充,互相学习
     


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值