java - Android:启动抽屉布局时出现内存不足错误

标签 java android android-studio out-of-memory navigation-drawer

当我调试代码时,我遇到内存不足错误,它在以下代码行中失败:

 setContentView(R.layout.activity_drawer); 

错误如下:

01-01 23:16:14.611  24083-24083/? E/CrashReporting﹕ ParseCrashReporting caught a OutOfMemoryError exception for wishlist.oj.app. Building report.
01-01 23:16:14.613  24083-24083/? E/CrashReporting﹕ Handling exception for crash
    java.lang.OutOfMemoryError: Failed to allocate a 86400012 byte allocation with 16777120 free bytes and 66MB until OOM
            at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
            at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
            at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
            at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
            at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:988)
            at android.content.res.Resources.loadDrawableForCookie(Resources.java:2578)
            at android.content.res.Resources.loadDrawable(Resources.java:2471)
            at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
            at android.widget.ImageView.<init>(ImageView.java:146)
            at android.widget.ImageView.<init>(ImageView.java:135)
            at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:58)
            at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:54)
            at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:95)
            at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:938)
            at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:992)
            at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:256)
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
            at wishlist.oj.app.home.ActivityDrawer.onCreate(ActivityDrawer.java:34)
            at android.app.Activity.performCreate(Activity.java:6072)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2315)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424)
            at android.app.ActivityThread.access$900(ActivityThread.java:155)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1323)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:139)

我的activity_drawer XML 代码如下所示:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:id="@+id/drawer_layout"
    tools:context=".ActivityDrawer">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <android.support.v7.widget.Toolbar
            android:id="@+id/tool_bar"
            theme="@style/MyToolbarThemeSimple.Base"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:minHeight="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            >
        </android.support.v7.widget.Toolbar>
        <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >

        </FrameLayout>
    </LinearLayout>
    <!--  The Navigation drawer      -->
    <RelativeLayout
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:background="@color/windowBackground"
        android:id="@+id/drawer"
        android:layout_gravity="start">

        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:id="@+id/cardview_drawer"
            />

    </RelativeLayout>
</android.support.v4.widget.DrawerLayout>

我尝试了很多方法,例如通过使用编译器 VM 选项将堆大小增加到 -Xmx2048m -XX:MaxPermSize=512m。
另外,我检查了设置=>构建、执行、开发环境=>编译器中存在的“并行编译独立模块”选项 但没有任何结果..有什么帮助吗?

最佳答案

显示如何使用示例代码有效加载位图的链接。

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

关于java - Android:启动抽屉布局时出现内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34560332/

相关文章:

java - 无法使用提供的 Gradle 包装器或系统 Gradle 构建新创建的 Grails 6.0.0 应用程序

java - 如何反转 int 的顺序而不将其转换为字符串

java - 如何在主模块[module-info.java]中添加库?

java - 使用没有缓冲阅读器的扫描仪从 Assets 中的文本文件中读取双倍

Android Studio,如何删除带有引用的文件夹?

java - ant 失败未知参数 : -buildfile=build. xml

android - 如何将 View 放在具有动态文本的 TextView 下方

android - picasso 安卓内存问题

android - timer.setText (“setTextHere”)在线程内不起作用

android-studio - 如何在 Android Studio 中按字母顺序重新排列代码?