Android避免context相关内存溢出
? ? ? 手机都有一定的内存限制,比如G1,只有16M的堆内存限制。作为手机开发者,在开发的时候,应该尽可能的节约内存。Android系统内存保存的应用越多,那么用户在使用时程序切换也就越快。其实,很多的内存溢出都有一个共同的特点,那就是,和Context相关的东西长期没有得到释放。
? ? ? 在Android上,一个Context用于很多操作,最多是用来加载和使用资源。这也是为什么很多widgets 都有一个Context参数的构造方法。Android应用中通常有两种Context,Activity?and?Application。通常程序员调用类和方法都用到第一个Context.
? ? ? 请看下面一段代码:
? ? ??@Override
?
}
这段代码就会比较健壮了,当切换横竖屏的时候,图片就不会重新加载了。
防止Context相关内存溢出有两个比较简单的方法,一种可以像上面这样,另外一种使用Application的Context.
总结:
1.Activity的变量应该和该Activty有一样的生命周期
2.试着使用Application的Context
3.避免在Activity中使用非静态类,如果你不控制该类的生命周期的话。可以创建一个静态内部类,并且在
Activity里使用一些weak reference ,这个观点的解决办法就是在外部类中使用?WeakReference管理 ? ? ? ?类。? ? ?4.垃圾回收器不是对内存的保险。?