【问题标题】:java.lang.OutOfMemoryError: Failed to allocate a allocation until OOMjava.lang.OutOfMemoryError:在OOM之前无法分配分配
【发布时间】:2017-05-02 05:40:54
【问题描述】:

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

谁能帮忙解决这个问题?

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

java.lang.OutOfMemoryError: 无法在 dalvik.system.VMRuntime.newNonMovableArray(Native Method) 在 android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 在 dalvik.system.VMRuntime.newNonMovableArray(Native Method) 分配 1660396 字节分配和 1243880 空闲字节和 1214KB .graphics.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) at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) at android.content.res.Resources.loadDrawable(Resources.java:858) at 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.inf android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1227) 的lateFromXml(DrawableInflater.java:130) android.content.res.ResourcesImpl 的android.graphics.drawable.Drawable.createFromXml(Drawable.java:1200) android.content.res.Resources.getDrawable(Resources.java:771) 上 android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) 上的 .loadDrawableForCookie(ResourcesImpl.java:715)。 getDrawable(Context.java:525) at android.view.View.setBackgroundResource(View.java:18228) at com.example.kq.meettheshps.Score_Card.onCreate(Score_Card.java:58) at 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章tyThread.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)

【问题讨论】:

标签: java android image


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我发现的简单解决方案是, 在application下添加hardwareAccelerated & largeHeap AndroidManifest.xml

    <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">
    

    【讨论】:

    • 为什么hardwareAccelerated应该是假的?
    【解决方案3】:

    这是由于大尺寸图像而发生的。尝试使用小尺寸图像,即您的手机屏幕分辨率。

    我遇到了同样的问题。尝试使用 2100 x 1300 px 减小 Paint 中的图像大小,它可以工作,但应用程序非常滞后。

    【讨论】:

      【解决方案4】:

      这是处理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">
      

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2018-06-29
        • 1970-01-01
        • 1970-01-01
        • 2018-10-02
        • 2018-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多