我的应用程序中有各种图像,使用可绘制我导入这些图像。但是每当我尝试高分辨率的图像时,我都会经常得到
09-02 11:52:09.289:E/AndroidRuntime(29749):java.lang.OutOfMemoryError:位图大小超过 VM 预算 09-02 11:52:09.289:E/AndroidRuntime(29749):在 android.graphics.BitmapFactory。 nativeDecodeAsset(Native Method) 09-02 11:52:09.289: E/AndroidRuntime(29749): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460)
对于这个特定问题,当我移动到下一个活动时,我使用以下代码清除位图
protected void onPause() {
super.onPause();
MemoryClearManager.unbindDrawables(findViewById(R.id.mainlayout));
System.gc();
Runtime.getRuntime().gc();
}
public class MemoryClearManager {
/**
* @param view
* Removes callback on all the background drawables
* Removes child on every view group
*/
public static void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup && !(view instanceof AdapterView)) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
try{
((ViewGroup) view).removeAllViews();
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
}
即使我这样做,我也无法解决内存问题。我可以在其他设备上运行相同的代码。谁能指导我解决这个特定问题。
提前致谢。