OutOfMemoryException - 使用Glide的最佳方式

时间:2017-01-11 14:32:42

标签: java android performance memory-management heap-memory

我正在使用滑行从互联网上加载数百张图片。所有这些都在RecyclerView中。我的代码运行正常。但是,当我滚动Android时超出一定数量的图像会抛出outOfMemoryException -

UncaughtException: java.lang.OutOfMemoryError: Failed to allocate a 8754216 byte allocation with 6257104 free bytes and 5MB until OOM
                                                                              at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                                                                              at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
                                                                              at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620)
                                                                              at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455)
                                                                              at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155)
                                                                              at 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)
                                                                              at android.widget.ImageView.<init>(ImageView.java:162)
                                                                              at android.widget.ImageView.<init>(ImageView.java:150)
                                                                              at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:60)
                                                                              at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:56)
                                                                              at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
                                                                              at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1017)
                                                                              at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1076)
                                                                              at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                                              at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
                                                                              at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
                                                                              at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
                                                                              at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
                                                                              at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
                                                                              at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
                                                                              at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
                                                                              at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
                                                                              at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
                                                                              at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
                                                                              at android.view.LayoutInflater.parseInclude(LayoutInflater.java:994)
                                                                              at android.view.LayoutInflater.rInflate(LayoutInflater.java:854)
                                                                              at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
                                                                              at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
                                                                              at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
                                                                              at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
                                                                              at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
                                                                              at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
                                                                              at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
                                                                              at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
                                                                              at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
                                                                              at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
                                                                              at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
                                                                              at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
                                                                              at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
                                                                              at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143)
                                                                              at com.devsvalley.pacobookings.HallDetailActivity.onCreate(HallDetailActivity.java:116)
                                                                              at android.app.Activity.performCreate(Activity.java:6679)
                                                                              at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
                                                                              at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                              at android.os.Looper.loop(Looper.java:154)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:6119)

01-11 19:37:02.860 3261-3261 / com.devsvalley.pacobookings E / UncaughtException:at 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)

1 个答案:

答案 0 :(得分:1)

在清单中使用这些行:

android:largeHeap="true" 
android:hardwareAccelerated="false"