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

新手上路,请多包涵

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

任何人都可以帮助解决这个问题吗?

致命异常:主进程:com.example.we.appname,PID:9353

java.lang.OutOfMemoryError:无法在 dalvik.system.VMRuntime.newNonMovableArray(本机方法)在 android.graphics.BitmapFactory.nativeDecodeAsset(本机方法)在 android.graphics 上分配 1660396 字节分配,其中有 1243880 个可用字节和 1214KB。 BitmapFactory.decodeStream(BitmapFactory.java:620) 在 android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455) 在 android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155) 在 android.content.res.ResourcesImpl .loadDrawableForCookie(ResourcesImpl.java:720) 在 android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) 在 android.content.res.Resources.loadDrawable(Resources.java:858) 在 android.content.res。 TypedArray.getDrawable(TypedArray.java:928) 在 android.graphics.drawable.AnimationDrawable.inflateChildElements(AnimationDrawable.java:327) 在 android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:297) 在 android.graphics.drawable .DrawableInflater.inflat eFromXml(DrawableInflater.java:130) 在 android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1227) 在 android.graphics.drawable.Drawable.createFromXml(Drawable.java:1200) 在 android.content.res.ResourcesImpl .loadDrawableForCookie(ResourcesImpl.java:715) 在 android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) 在 android.content.res.Resources.getDrawable(Resources.java:771) 在 android.content.Context。 getDrawable(Context.java:525) 在 android.view.View.setBackgroundResource(View.java:18228) 在 com.example.kq.meettheshps.Score_Card.onCreate(Score_Card.java:58) 在 android.app.Activity.performCreate (Activity.java:6679) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2726) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread\(H.handleMessage(ActivityT hread.java:1477) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6119) ) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit\)MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit .java:776)

原文由 NatheemYousf 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 403
2 个回答

我发现的简单解决方案是添加 hardwareAcceleratedAndroidManifest.xmllargeHeap application

 <application
     android:allowBackup="true"
     android:hardwareAccelerated="false"
     android:icon="@mipmap/ic_launcher"
     android:label="@string/app_name"
     android:largeHeap="true"
     android:supportsRtl="true"
     android:theme="@style/AppTheme">

原文由 Narendra Sorathiya 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是处理 Bitmap 时的常见错误,因此在 AndroidManifest.xml 中添加此行: android:largeHeap="true"

  <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:largeHeap="true"
        android:hardwareAccelerated="false"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.NoActionBar">

希望它会有所帮助。

原文由 Wajid khan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题