【发布时间】:2017-06-25 13:53:42
【问题描述】:
我使用FragmentStatePagerAdapter 创建了一个包含视图寻呼机的活动。当使用下面的OutOfMemmoryError 启动此活动时,应用程序会立即崩溃。请帮忙指出哪个错误。我花了几个小时,但找不到自己。
02-07 23:04:58.187 16037-16037/com.makeit.lite E/AndroidRuntime: Error reporting crash
java.lang.OutOfMemoryError: Failed to allocate a 34831542 byte allocation with 16765168 free bytes and 31MB until OOM
at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:95)
at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:125)
at java.lang.StringBuffer.append(StringBuffer.java:278)
at java.io.StringWriter.write(StringWriter.java:123)
at com.android.internal.util.FastPrintWriter.flushLocked(FastPrintWriter.java:358)
at com.android.internal.util.FastPrintWriter.appendLocked(FastPrintWriter.java:303)
at com.android.internal.util.FastPrintWriter.write(FastPrintWriter.java:625)
at com.android.internal.util.FastPrintWriter.append(FastPrintWriter.java:658)
at java.io.PrintWriter.append(PrintWriter.java:691)
at java.io.PrintWriter.append(PrintWriter.java:687)
at java.io.Writer.append(Writer.java:198)
at java.lang.Throwable.printStackTrace(Throwable.java:324)
at java.lang.Throwable.printStackTrace(Throwable.java:300)
at android.util.Log.getStackTraceString(Log.java:343)
at com.android.internal.os.RuntimeInit.Clog_e(RuntimeInit.java:61)
at com.android.internal.os.RuntimeInit.-wrap0(RuntimeInit.java)
at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:86)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
这里是activity和view pager的源码:
- 初始化视图寻呼机:
- 适配器:
- 具有空布局的片段
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="test"/> </LinearLayout>
【问题讨论】:
-
inflater.inflate(R.layout.fragment_month, 容器, false);试试这个而不是 inflater.inflate(R.layout.fragment_month, container);
-
到目前为止,我在您提供的代码中找不到任何可能导致 OOM 的内容,但您是否在布局中使用了高清图像?
-
你使用大堆大小吗?
-
MonthFragment 的布局是什么? OOM 错误背后很可能存在大图像。
-
@Nguyen Minh Binh 尝试使用 viewPager 设置 offscreenpagelimit,
标签: android