我释放了每个对象,回收onDestroy()方法中的所有位图:
private voID unbindDrawables(VIEw vIEw) { if (vIEw.getBackground() != null) { vIEw.getBackground().setCallback(null); } if (vIEw instanceof VIEwGroup) { for (int i = 0; i < ((VIEwGroup) vIEw).getChildCount(); i++) { unbindDrawables(((VIEwGroup) vIEw).getChildAt(i)); } ((VIEwGroup) vIEw).removeAllVIEws(); }}@OverrIDeprotected voID onDestroy(){ super.onDestroy(); unbindDrawables(findVIEwByID(R.ID.RootVIEw)); bitmap.recycle(); bitmap=null; System.gc();}
我已经在每个类onDestroy()方法中完成了这个编码.但我的logcat仍然显示错误如:
FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{}: androID.vIEw.InflateException: Binary XML file line #2: Error inflating class androID.Widget.relativeLayout androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1956) androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) androID.app.ActivityThread.access0(ActivityThread.java:123) androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) androID.os.Handler.dispatchMessage(Handler.java:99) androID.os.Looper.loop(Looper.java:137) androID.app.ActivityThread.main(ActivityThread.java:4424) java.lang.reflect.Method.invokeNative(Native Method) java.lang.reflect.Method.invoke(Method.java:511) com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:551) dalvik.system.NativeStart.main(Native Method) Caused by: androID.vIEw.InflateException: Binary XML file line #2: Error inflating class androID.Widget.relativeLayout androID.vIEw.LayoutInflater.createVIEw(LayoutInflater.java:606) com.androID.internal.policy.impl.PhoneLayoutInflater.onCreateVIEw(PhoneLayoutInflater.java:56) androID.vIEw.LayoutInflater.onCreateVIEw(LayoutInflater.java:653) androID.vIEw.LayoutInflater.createVIEwFromTag(LayoutInflater.java:678) androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:466) androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:396) androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:352) com.androID.internal.policy.impl.PhoneWindow.setContentVIEw(PhoneWindow.java:251) androID.app.Activity.setContentVIEw(Activity.java:1835) androID.app.Activity.performCreate(Activity.java:4465) androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1920) ... 11 more Caused by: java.lang.reflect.InvocationTargetException java.lang.reflect.Constructor.constructNative(Native Method) java.lang.reflect.Constructor.newInstance(Constructor.java:417) androID.vIEw.LayoutInflater.createVIEw(LayoutInflater.java:586) ... 23 more Caused by: java.lang.OutOfMemoryError androID.graphics.Bitmap.nativeCreate(Native Method) androID.graphics.Bitmap.createBitmap(Bitmap.java:605) androID.graphics.Bitmap.createBitmap(Bitmap.java:551) androID.graphics.Bitmap.createScaledBitmap(Bitmap.java:437) androID.graphics.BitmapFactory.finishDecode(BitmapFactory.java:524) androID.graphics.BitmapFactory.decodeStream(BitmapFactory.java:499) androID.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351) androID.graphics.drawable.Drawable.createFromresourceStream(Drawable.java:773) androID.content.res.Resources.loadDrawable(Resources.java:1935) androID.content.res.TypedArray.getDrawable(TypedArray.java:601) androID.vIEw.VIEw.<init>(VIEw.java:2785) androID.vIEw.VIEw.<init>(VIEw.java:2722) androID.vIEw.VIEwGroup.<init>(VIEwGroup.java:379) androID.Widget.relativeLayout.<init>(relativeLayout.java:174) ... 26 more
解决方法:
标题说明了一切 – 你试图为一个图像一次分配73兆字节的堆.仅此一项就超过了大多数现代设备上可用的堆大小 – 64兆字节.您需要找到一种方法来使用重要的小图像.
总结以上是内存溢出为你收集整理的android – dalvikvm-heap:73547536字节分配的内存不足全部内容,希望文章能够帮你解决android – dalvikvm-heap:73547536字节分配的内存不足所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)