java.lang.OutOfMemoryError:在OOM之前分配分配失败

实际上,我正在尝试创建一个包含n个多媒体文件的应用程序,其中包括图像和video。 我的应用大小约为34MB ,我的资产大小约为60mb 。 当我在普通设备上加载应用程序时,我们没有遇到任何问题,但是具有2K resolutions的设备,如Nexus 6P, HTC, LG等,应用程序在进程中间崩溃并出现“内存不足”错误”。 我用这个产生了错误报告。 我也尝试过位图工厂。 同时我在数组方法中使用video。

有人可以帮忙解决这个问题吗?

致命exception:主程序:com.example.we.appname,PID:9353

java.lang.OutOfMemoryError:无法在android.graphics上的android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)的dalvik.system.VMRuntime.newNonMovableArray(Native Method)中分配带有1243880个空闲字节和1214KB的1660396字节分配。位于android.graphtent.decodeStream(BitmapFactory.java:620)的android.graphics.DetableFactory.decodeResourceStream(BitmapFactory.java:455)位于android.content.res.ResourcesImpl的android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155) .loadDrawableForCookie(ResourcesImpl.java:720)位于android.content.res上的android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571)android.content.res.Resources.loadDrawable(Resources.java:858)。在Android.graphics.drawable上的android.graphics.drawable.AnimationDrawable.TerFlate(动画可伸缩。爱情,动画可伸缩。 .DrawableInflater.inflat android.content.res.ResourcesImpl上android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1227)的android.graphics.drawable.Drawable.createFromXml(Drawable.java:1200)中的eFromXml(DrawableInflater.java:130) .loadDrawableForCookie(ResourcesImpl.java:715)位于android.content.res.Resources上的android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571)android.content.Context的android.content.res.Resources.getDrawable(Resources.java:771)。 android.app.Activity.performCreate的com.example.kq.meettheshps.Score_Card.onCreate(Score_Card.java:58)上的android.view.View.setBackgroundResource(View.java:18228)中的getDrawable(Context.java:525) (Activity.java:6679)在Android.app.ActivityThread.perleLaunchActivity(ActivityThread.java:2618)的android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2726)android.app.ActivityThread.-wrap12(ActivityThread.java)在android.app.ActivityThread $ H.handleMessage(ActivityT) hread.java:1477)android.app.Handler.dispatchMessage(Handler.java:102)android.app.Looper.loop(Looper.java:154)android.app.ActivityThread.main(ActivityThread.java:6119) )at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)的com.android.internal.os.ZygoteInit.main(ZygoteInit)中的java.lang.reflect.Method.invoke(Native Method)的.java:776)

我找到的简单解决方案是,在application AndroidManifest.xml下添加hardwareAcceleratedlargeHeap

  

听起来你要么在RAM中缓存太多文件,要么一遍又一遍地实例化相同的位图和video,直到你的内存不足为止。

除非您有不寻常的要求,否则您不应在2016年在Android上编写自己的图像加载和缓存代码。 使用已解决此问题的库之一。 有关更多指导,请参阅Picasso v / s Imageloader v / s Fresco vs Glide 。

处理Bitmap时常见错误,因此在AndroidManifest.xml中添加以下行:android:largeHeap =“true”

   

希望它会有所帮助。

这是因为大尺寸图像。 尝试使用小尺寸图像,即手机屏幕分辨率。

我有同样的问题。 尝试使用2100 x 1300像素减少Paint中的图像大小并且它工作但应用程序非常滞后。