1.当使用Service的时候,只有当任务在执行的时候才让Service运行起来,,儿当任务执行完毕时就应该关闭Serviec,而在关闭Service时要小心停止失败导致内存泄露的情况。
为了能够控制生命周期,谷歌建议使用IntentService,这种Service的最大特点是当任务执行完毕会自动关闭Service从而减少内存的消耗
2.当界面不可见时释放内存:当界面不可见时,我们应当将所有和界面相关的资源进行释放,只需要在Activity中重写onTrimMemory()方法,然后在这个方法中监听TRIM_MEMORY_HIDDEN这个级别,一旦触发了这个就说明用户已经离开了我们的程序,那么就可以进行资源的释放了:
@Override
public void onTrimMemory(int level){
super.onTrimMemory(level);
switch(level){
case: TRIM_MEMORY_UI_HIDDEN:
//进行资源释放操作
break;
}
}
3. 避免在Bitmnap上浪费内存,谷歌建议使用Lru缓存策略。
4.使用优化过的数据集合: Android Api 当中提供了一些优化过的数据集合工具类,如SparseArray,SparseArray,以及LongAparseArray等等,使用这些API可以使我们的程序更加高效。
SparseArray 指的是稀疏数组,所谓的稀疏数组就是数组中大部分的内容都未被使用(或未0),在数组中仅有少部分的空间使用,因此造成内存空间的浪费,因此可以使用一种压缩的数组来表示内容。
SparseArray是android里未<Integer,Object>这样的hashMap而专门写的类,目的是提高效率,其核心是折半查找函数(binargSearch)