【发布时间】:2016-03-13 20:56:46
【问题描述】:
我正在编写一个 android 应用程序,但遇到了问题。每隔一段时间,当切换活动时,应用程序会在 setContentView 上崩溃。它并不总是在同一个活动上。我得到的错误信息如下:
原因:java.lang.OutOfMemoryError:无法分配 24263724 字节分配,16777216 空闲字节和 22MB 直到 OOM
和
原因:android.view.InflateException: Binary XML file line #1: Error inflating class
任何帮助将不胜感激。
编辑:每次打开第三个新活动时都会发生这种情况。
这是我的一些代码: 活动一
public void firstroom(View view){
Intent firstroom=new Intent(this, firstroom.class);
putextras(firstroom);
startActivity(firstroom);
}
public void putextras(Intent play){
play.putExtra("doortoroom2", doortoroom2);
play.putExtra("doortoroom3", doortoroom3);
play.putExtra("endlockkey", endlockkey);
play.putExtra("endlockcombo", endlockcombo);
play.putExtra("endlockcolor", endlockcolor);
play.putExtra("havekey", havekey);
play.putExtra("havecrowbar", havecrowbar);
play.putExtra("haveflashlight", haveflashlight);
play.putExtra("keyselected", keyselected);
play.putExtra("crowbarselected", crowbarselected);
play.putExtra("flashlightselected", flashlightselected);
}
活动 2
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_firstroom);
XML
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.mattdevelopment01.mateusz.escaperoom.escaperoom.firstroom"
android:background="@drawable/firstroom">
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="150dp"
android:layout_height="200dp"
android:id="@+id/secondroom"
android:layout_marginBottom="52dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="@android:color/transparent"
android:onClick="blueroom" />
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="150dp"
android:layout_height="200dp"
android:id="@+id/end"
android:background="@android:color/transparent"
android:layout_alignTop="@+id/secondroom"
android:layout_toRightOf="@+id/secondroom"
android:layout_toEndOf="@+id/secondroom"
android:onClick="freedom" />
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="75dp"
android:layout_height="35dp"
android:id="@+id/topdrawer"
android:layout_marginLeft="73dp"
android:layout_marginStart="73dp"
android:layout_marginBottom="37dp"
android:layout_alignBottom="@+id/end"
android:layout_toRightOf="@+id/end"
android:layout_toEndOf="@+id/end"
android:background="@android:color/transparent"
android:onClick="topdrawer" />
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="75dp"
android:layout_height="35dp"
android:id="@+id/bottomdrawer"
android:background="@android:color/transparent"
android:layout_alignBottom="@+id/end"
android:layout_alignLeft="@+id/topdrawer"
android:layout_alignStart="@+id/topdrawer"
android:onClick="bottomdrawer" />
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="25dp"
android:layout_height="25dp"
android:id="@+id/endkey"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:background="@android:color/transparent"
android:layout_above="@+id/endcombo"
android:layout_alignLeft="@+id/end"
android:layout_alignStart="@+id/end"
android:onClick="endkey" />
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="50dp"
android:layout_height="25dp"
android:id="@+id/endcombo"
android:background="@android:color/transparent"
android:layout_above="@+id/endcolor"
android:layout_alignLeft="@+id/endcolor"
android:layout_alignStart="@+id/endcolor"
android:onClick="endcombo" />
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="50dp"
android:layout_height="25dp"
android:id="@+id/endcolor"
android:background="@android:color/transparent"
android:layout_alignBottom="@+id/topdrawer"
android:layout_alignLeft="@+id/endkey"
android:layout_alignStart="@+id/endkey"
android:onClick="endcolor" />
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="50dp"
android:layout_height="45dp"
android:id="@+id/key"
android:layout_marginLeft="51dp"
android:layout_marginStart="51dp"
android:background="@drawable/key"
android:onClick="key"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="50dp"
android:layout_height="45dp"
android:id="@+id/flashlight"
android:background="@drawable/flashlight"
android:onClick="flashlight"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/crowbarget"
android:layout_toEndOf="@+id/crowbarget" />
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="50dp"
android:layout_height="45dp"
android:id="@+id/crowbarget"
android:background="@drawable/crowbar"
android:onClick="crowbar"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/key"
android:layout_toEndOf="@+id/key" />
【问题讨论】:
-
您以某种方式要求系统分配近 2 Gb 的内存。也许某些动态数组太大,这是由错误引起的。如果您无法自己找到解决方案,请显示您的一些代码。
-
我认为这是一个无限循环案例。请出示您的代码。
-
@drawable/firstroom 位图有多大?您还可以发布崩溃的完整堆栈跟踪吗?
-
您在打开第三个
Activity时发生的崩溃,不管那是什么,这意味着您的Activity类可能没有得到正确的垃圾收集。这些崩溃是否也会在配置更改时发生(即连续旋转您的应用程序 3 次)?您的代码中是否对View对象或Listeners 有任何static引用?无论如何,调试内存问题通常是相当复杂的。您可以使用Official Docs 中列出的工具来帮助调试。
标签: java android xml android-activity