在Android 4.2及其更高版本中,尤其是在处理大量图像和其他资源时,内存限制变得更为严格。这可能导致在应用程序中使用大量内存时出现'OutOfMemory”错误。
下面是一些可能的解决方案:
优化应用程序中的内存使用:检查是否有没有用的对象和资源,以及是否存在内存泄漏。Android SDK提供了一些工具,如Android Profiler和Allocation Tracker,可用来检测内存使用情况。
给应用程序分配更多内存:可以在AndroidManifest.xml文件中设置android:largeHeap="true",以在可能的情况下增加应用程序的堆大小。
执行限制内存使用的操作:可以使用LRU缓存等算法,以限制应用程序内存的使用。以下是一个示例代码片段,展示如何使用LRU缓存来缓存图像:
private LruCache mMemoryCache;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 获取最大可用内存
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
// 使用1/8可用内存作为缓存大小
final int cacheSize = maxMemory / 8;
mMemoryCache = new LruCache(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
// 计算bitmap的大小
return bitmap.getByteCount() / 1024;
}
};
}
public void addBitmapToMemoryCache(String key, Bitmap bitmap) {
if (getBitmapFromMemCache(key) == null) {
mMemoryCache.put(key, bitmap);
}
}
public Bitmap getBitmapFromMemCache(String key) {
return mMemoryCache.get(key);
}
以上是一些可能有助于解决Android 4.2及更高版本中'OutOfMemory”错误的方案。