应用程序中的多语言支持的内存不足异常

时间:2012-07-04 05:49:49

标签: android

我正在处理我的一个applciation,其中有9个tabhost和activitygroup

标签

有9个选项卡我的应用程序运行完美但是当我为语言屏幕添加第10个选项卡时我在下拉列表中有7个语言更改下拉值应用程序语言已更改但之后我导航屏幕4到5次

发生内存不足异常 这是错误异常

异常

07-04 13:41:57.941: E/AndroidRuntime(4866): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.view.LayoutInflater.createView(LayoutInflater.java:513)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at com.milagemaster.Activity_setup.onCreate(Activity_setup.java:51)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
07-04 13:41:57.941: E/AndroidRuntime(4866):     ... 31 more
07-04 13:41:57.941: E/AndroidRuntime(4866): Caused by: java.lang.reflect.InvocationTargetException
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.widget.RelativeLayout.<init>(RelativeLayout.java:171)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at java.lang.reflect.Constructor.constructNative(Native Method)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.view.LayoutInflater.createView(LayoutInflater.java:500)
07-04 13:41:57.941: E/AndroidRuntime(4866):     ... 39 more
07-04 13:41:57.941: E/AndroidRuntime(4866): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:447)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:323)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.content.res.Resources.loadDrawable(Resources.java:1705)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at android.view.View.<init>(View.java:1850)
07-04 13:41:57.941: E/AndroidRuntime(4866):     at 

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/relroot"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bg"
    android:gravity="top" >

    <LinearLayout
        android:id="@+id/lnrTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:orientation="vertical" >

        <com.milagemaster.utility.Header
            android:id="@+id/header"
            android:layout_width="fill_parent"
            android:layout_height="50dp" />

        <RelativeLayout
            android:id="@+id/relativeHome"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/title" >

            <TextView
                android:id="@+id/txtAddData"
                style="@style/TitleTextAppearance"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:text="@string/results"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="@color/black" />

            <Button
                android:id="@+id/btnEmail"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:text="Send Mail"
                android:visibility="visible" />
        </RelativeLayout>
    </LinearLayout>

    <FrameLayout
        android:id="@+id/lnrscroll_barsMain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/lnrTitle"
        android:layout_centerHorizontal="true" >

        <ImageView
            android:id="@+id/imgShadow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/shadow_title" />
    </FrameLayout>

    <ScrollView
        android:id="@+id/scroll_barsMain"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/lnrTitle"
        android:layout_marginBottom="10dp"
        android:fadingEdge="none"
        android:scrollbars="vertical" >

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <RelativeLayout
                android:id="@+id/relativeResult"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_gravity="top" >

                <LinearLayout
                    android:id="@+id/relativetitle"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:layout_marginTop="5dp"
                    android:background="@drawable/top_blue" >

                    <TextView
                        android:id="@+id/txtResultTitle"
                        android:layout_width="80dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        android:ellipsize="end"
                        android:gravity="center_horizontal"
                        android:text="@string/vehcile"
                        android:textAppearance="?android:attr/textAppearanceMedium"
                        android:textColor="@color/black"
                        android:textSize="16dp" />

                    <Spinner
                        android:id="@+id/spnSelectVehicle"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginRight="5dp"
                        android:background="@drawable/dropdown"
                        android:paddingLeft="10dp" />
                </LinearLayout>
                <!--
                     <TextView
                    android:id="@+id/txtResultTitle"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:layout_marginTop="5dp"
                    android:background="@drawable/top_blue"
                    android:gravity="center_vertical|center_horizontal"
                    android:text="your vehicle"
                    android:textColor="@color/black"
                    android:textSize="18dp" />


                -->

                <LinearLayout
                    android:id="@+id/frameresult"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/relativetitle"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:background="@drawable/bg_box"
                    android:orientation="vertical" >

                    <TextView
                        android:id="@+id/txtResult"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        android:layout_marginTop="10dp"
                        android:gravity="center"
                        android:text=""
                        android:textColor="@color/black"
                        android:textSize="14dp" />

                    <TextView
                        android:id="@+id/txtDate"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="15dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        android:gravity="center_vertical|center_horizontal"
                        android:text="(mpg/kpl)"
                        android:textColor="@color/mileage1"
                        android:textSize="14dp"
                        android:textStyle="bold" />

                    <LinearLayout
                        android:id="@+id/linearLayout1"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        android:orientation="vertical" >

                        <TextView
                            android:id="@+id/txtAvg"
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:gravity="center_vertical|center_horizontal"
                            android:text=""
                            android:textColor="@color/mileage1"
                            android:textSize="22sp"
                            android:textStyle="bold"
                            android:visibility="gone" />

                        <TextView
                            android:id="@+id/txtAddFirstTime"
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:gravity="center_vertical|center_horizontal"
                            android:text=""
                            android:textColor="@color/gray_text"
                            android:textSize="12dp" />
                    </LinearLayout>

                    <LinearLayout
                        android:id="@+id/lnrLifeTime"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="10dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        android:orientation="vertical" >

                        <TextView
                            android:id="@+id/txtResultLifeTime"
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="10dp"
                            android:layout_marginRight="10dp"
                            android:gravity="center"
                            android:text=""
                            android:textColor="@color/black"
                            android:textSize="14dp"
                            android:visibility="gone" />

                        <TextView
                            android:id="@+id/txtLifeMileage"
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginBottom="15dp"
                            android:layout_marginLeft="10dp"
                            android:layout_marginRight="10dp"
                            android:gravity="center_vertical|center_horizontal"
                            android:text="(mpg/kpl)"
                            android:textColor="@color/mileage1"
                            android:textSize="14dp"
                            android:textStyle="bold"
                            android:visibility="gone" />
                    </LinearLayout>
                </LinearLayout>

                <Button
                    android:id="@+id/btnSave"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/frameresult"
                    android:layout_centerHorizontal="true"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:layout_marginTop="15dp"
                    android:background="@drawable/themed_btnlarge"
                    android:text="@string/savelocationasfavorite"
                    android:textSize="16sp" />

                <LinearLayout
                    android:id="@+id/frameButton"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/btnSave"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:layout_marginTop="15dp" android:gravity="center_vertical">

                    <Button
                        android:id="@+id/btnChartMilage"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:background="@drawable/themed_mileagechart"
                        android:text="@string/mileagechart"
                        android:textSize="14dp" />

                    <Button
                        android:id="@+id/btnCostGallons"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:background="@drawable/themed_fuelcost"
                        android:text="Cost/unit Chart"
                        android:textSize="14dp" />

                    <Button
                        android:id="@+id/btnChartFuel"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:background="@drawable/themed_fualpricechart"
                        android:text="@string/fuelchart"
                        android:textSize="14dp" />
                </LinearLayout>

                <Button
                    android:id="@+id/btnShare"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/frameButton"
                    android:layout_centerHorizontal="true"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:layout_marginTop="15dp"
                    android:background="@drawable/themed_btnlarge"
                    android:text="@string/share"
                    android:textSize="16sp" />
            </RelativeLayout>
        </RelativeLayout>
    </ScrollView>

</RelativeLayout>

请给我一些建议

4 个答案:

答案 0 :(得分:0)

由于位图而发生此OOME异常。

使用位图后是否正在调用bitmap.recycle()方法?您应该始终调用此方法,因为它将释放位图所拥有的资源。

由于代码中的内存泄漏,会发生此错误。你需要找到它。您可以使用MAT(插件)来查看内存泄漏。

有关详细信息,请参阅我的answer

如果这不能解决问题,请告诉我们,我们会找到其他解决方案。

谢谢:)

答案 1 :(得分:0)

首先查看此异常Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 您的某个布局.XML

中有错误

答案 2 :(得分:0)

我怀疑它是否重现了这项活动。如果您在更改语言时仔细观察,则当前活动已停止,Android将使用新语言重新创建新活动。它类似于更改屏幕方向,因此如果您管理内存使用情况就可以了。 通过执行以下操作,确保没有内存泄漏。有一个youtube视频

  • 确保您的活动是线程安全的
  • 当第一个活动死亡时,检查资源是否正确解除

答案 3 :(得分:0)

您可能使用大位图作为背景。布局膨胀期间发生内存不足异常。如果可能,请使用较小的位图。