Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单Android应用程序-在智能手机上运行时出现内存不足错误_Java_Android_Out Of Memory - Fatal编程技术网

Java 简单Android应用程序-在智能手机上运行时出现内存不足错误

Java 简单Android应用程序-在智能手机上运行时出现内存不足错误,java,android,out-of-memory,Java,Android,Out Of Memory,我是Android Studio的新手,我尝试制作一个简单的应用程序。单击按钮后应出现随机图像。下一个不能是已经显示的 我有两节课。主要活动和随机卡片绘制 当我在AVD模拟器中运行应用程序时,它不会崩溃。但有时我会得到“跳过帧”的信息。当我在三星S6上运行它时,每当我试图获取第二张图像时,应用程序都会崩溃。在Android中,我可以看到内存不足错误 图像大小在100-200kb之间,我有大约18幅 也许你能看到我的表现问题是从哪里来的 这是我的密码: 主要活动: import android.s

我是Android Studio的新手,我尝试制作一个简单的应用程序。单击按钮后应出现随机图像。下一个不能是已经显示的

我有两节课。主要活动和随机卡片绘制

当我在AVD模拟器中运行应用程序时,它不会崩溃。但有时我会得到“跳过帧”的信息。当我在三星S6上运行它时,每当我试图获取第二张图像时,应用程序都会崩溃。在Android中,我可以看到内存不足错误

图像大小在100-200kb之间,我有大约18幅

也许你能看到我的表现问题是从哪里来的

这是我的密码:

主要活动:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;



public class MainActivity extends AppCompatActivity {

    ImageView cardView;
    Button nextCard;
    RandomCardDraw2 game1 = new RandomCardDraw2();
    int counter = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        game1.createRandomCardList();
        gameStart();


    }

    public void gameStart()
    {
        cardView = (ImageView) findViewById(R.id.cardView);
        nextCard = (Button) findViewById(R.id.nextCard);
        nextCard.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {

                if (counter < 19)
                {
                    int id = getResources().getIdentifier(game1.drawnCards.get(counter), "drawable", getPackageName());
                    cardView.setImageResource(id);
                    counter++;
                }

            }
        });

    }

}
有人能帮忙吗


非常感谢

在清单中添加以下行:

android:hardwareAccelerated="false"
android:largeHeap="true"
@您的manifest.xml应该是:

<application
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="@style/AppTheme">


请发布您的stacktrace。。。!嗨,shobhit,谢谢你的提示。我编辑了它,并在我的问题中输入了错误代码。我希望这就是你所说的stacktrace<代码>图像大小在100-200kb之间。它们是什么样的图像?他们的决心是什么?看看你的跟踪。您可以清楚地看到它以OnClick()开头,并且
cardwiew.setImageResource(id)
是罪魁祸首,因为它使用BitmapFactory.DecodeSourceStream,这会使位图变得太大,无法使用可用内存。(从下到上读取stacktrace)。
在我的智能手机上,应用程序崩溃了
。如果您发现OutOfMemoryError,您的应用程序不必崩溃。您可以使用e.getMessage()信息向用户显示Toast()。谢谢您的回答。我明天会测试它。从声明来看,这是否只是允许应用程序获得更多内存?我的意思是,我希望有一个高效的应用程序,不消耗500兆内存。当抽出一张卡时,我的手机会显示应用程序的200 MB内存使用量……实际上android:largeHeap是增加应用程序分配内存的工具。没有明确定义是否需要使用此标志。如果你需要更多的内存,Android为你提供了一个增加内存的工具。好的,谢谢。至少它现在起作用了。由于我的错误来自BitmapFactory,是否可以循环()位图以节省内存?如果是,怎么做?使用缓存位图技术:如果你觉得答案有用,你能接受吗?
android:hardwareAccelerated="false"
android:largeHeap="true"
<application
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="@style/AppTheme">