0

我正在制作一个非常简单的应用程序,其中包含 38 张图像,当我运行该应用程序时,我收到了以下消息:

不幸的是,MyAppName已停止。

当我单击确定时,应用程序返回工作,然后接下来的几页做同样的事情。

我的应用程序无需连接到互联网即可运行,

这是我的 LogCat:

12566540 字节分配内存不足。致命异常:主要 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.Web.myappname/com.Web.myappname.A4}:android.view.InflateException:二进制 XML 文件第 2 行:膨胀类错误

我在背景中使用图像。

这是 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android1="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android1:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/image_01" >

<Button
android1:id="@+id/button1"
android1:layout_width="wrap_content"
android1:layout_height="wrap_content"
android1:layout_alignParentLeft="true"
android1:layout_alignParentTop="true"
android1:text="Main"
android1:textStyle="bold"
tools:ignore="HardcodedText" />

<Button
android1:id="@+id/button2a1"
android1:layout_width="wrap_content"
android1:layout_height="wrap_content"
android1:layout_alignParentRight="true"
android1:layout_alignParentTop="true"
android1:text="Next"
android1:textStyle="bold"
tools:ignore="HardcodedText" />

</RelativeLayout>

和java文件:

package com.web.myappname;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class A1 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
    setContentView(R.layout.a1);

    Button main = (Button) findViewById(R.id.button1);
    main.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                    // TODO Auto-generated method stub
                    startActivity(new Intent(A1.this, MainActivity.class));

            }
    });

    Button forward = (Button) findViewById(R.id.button2a1);
    forward.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                    // TODO Auto-generated method stub
                    startActivity(new Intent(A1.this, A2.class));

            }
    });

    }

}

非常感谢任何形式的帮助或建议。谢谢 !

4

3 回答 3

1

没有代码,很难提出任何建议。

您的应用程序正在崩溃,因为您正在加载大量图像而没有回收内存。它总是与图像有关。也许如果您在内存不足的手机上尝试它,您的应用程序会更快崩溃。

解决方案:最好的办法是使用外部好的库来加载图像。它会为您处理所有事情,并且当您不释放内存时,您的应用程序不会崩溃。

最常用的库是https://github.com/nostra13/Android-Universal-Image-Loader

于 2013-09-07T23:09:36.847 回答
0

这可能有用:android:largeHeap="true"

它告诉android它想要一个更大的堆分配。但是Android不必尊重它。这可能会“解决”您的问题,但我也认为这是一个糟糕的解决方案。

于 2013-09-07T23:29:15.217 回答
0

位图图像需要大量内存,并且您的应用程序在加载图像时内存不足。您必须有效地加载大位图。请参阅如何在 Android 中加载大位图。

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

Android Universal Image Loader也是不错的选择。

于 2013-09-07T23:14:05.140 回答