Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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
Android 在我的应用程序中出现了一个非常奇怪的内存不足错误_Android_Android Layout_Android Intent - Fatal编程技术网

Android 在我的应用程序中出现了一个非常奇怪的内存不足错误

Android 在我的应用程序中出现了一个非常奇怪的内存不足错误,android,android-layout,android-intent,Android,Android Layout,Android Intent,我已经阅读了几乎所有关于stackoverflow的相关问题,但似乎都与我遇到的问题有关。首先,我的应用程序包含160多个图像,每个图像的大小约为800 x 2000,大小约为180-300KB。现在,在我的三星galaxy s2版本4.0.3上,我的应用程序运行良好,一次测试大约20分钟没有问题,在我的galaxy young版本2.3.6上,仍然以同样的方式测试它,但在我的摩托罗拉xoom 2平板电脑10.1英寸版本4.0.4上,甚至在测试应用程序的2分钟内,它给我java.lang.Out

我已经阅读了几乎所有关于stackoverflow的相关问题,但似乎都与我遇到的问题有关。首先,我的应用程序包含160多个图像,每个图像的大小约为800 x 2000,大小约为180-300KB。现在,在我的三星galaxy s2版本4.0.3上,我的应用程序运行良好,一次测试大约20分钟没有问题,在我的galaxy young版本2.3.6上,仍然以同样的方式测试它,但在我的摩托罗拉xoom 2平板电脑10.1英寸版本4.0.4上,甚至在测试应用程序的2分钟内,它给我java.lang.OutOfMemory错误。现在,在一些线程上,我读到java.lang.OutOfMemoryError:位图大小超过VM预算,但这与我无关,因为我刚刚得到java.lang.OutOfMemoryError。这是我得到的错误

11-11 10:00:33.266: E/AndroidRuntime(5390): FATAL EXCEPTION: main
11-11 10:00:33.266: E/AndroidRuntime(5390): java.lang.OutOfMemoryError
11-11 10:00:33.266: E/AndroidRuntime(5390):     at   android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.graphics.BitmapFactory.decodeStream  (BitmapFactory.java:520)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at   android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:783)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.content.res.Resources.loadDrawable(Resources.java:1954)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.content.res.Resources.getDrawable(Resources.java:666)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.widget.ImageView.resolveUri(ImageView.java:570)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.widget.ImageView.setImageResource(ImageView.java:343)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at com.example.sample.app.Samples$5.onClick(Samples.java:77)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.view.View.performClick(View.java:3526)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.view.View$PerformClick.run    (View.java:14149)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.os.Handler.handleCallback (Handler.java:605)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.os.Handler.dispatchMessage (Handler.java:92)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.os.Looper.loop(Looper.java:137)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at android.app.ActivityThread.main(ActivityThread.java:4697)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at java.lang.reflect.Method.invokeNative(Native Method)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at java.lang.reflect.Method.invoke(Method.java:511)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
11-11 10:00:33.266: E/AndroidRuntime(5390):     at dalvik.system.NativeStart.main(Native Method)
我让我的朋友在他的三星10.1英寸平板电脑上测试这个应用程序,但不确定他的版本,看看是否会出现同样的问题。我还没有收到他的消息,但一旦收到,我会在这里公布结果。所以,如果他没有出错,我能安全地假设这是我的平板电脑吗?或者我的应用程序在平板电脑上不能正常工作


有什么建议吗?

这只是你找到的解决办法。它不会在内存不足的设备上运行。 您必须减小图像的大小以使用更少的内存


这是安卓系统的一个众所周知的问题,所以谷歌搜索一下,你会发现很多线程解释如何在安卓系统中处理位图

你真的需要一次将所有这些位图保存在内存中吗?嗯,对不起,将位图保存在内存中是什么意思?如果我能摆脱它们,那就太好了,但是如何摆脱呢?每次创建位图时,都会将图像内容加载到内存中。Android中每个应用程序的内存堆非常有限,因此您需要优化应用程序中的位图使用情况。确保只加载应用程序当前需要的位图,并回收不再需要的位图。如果android版本高于3.0,则可以扩展堆大小。我不是100%确定怎么做,但这是由android API实现的。我所做的是,我有一个imageview,有42个按钮,每个按钮都有一个示例图像。选择按钮时,它会显示图像。下面是一些例子。最终ImageView ImageView=ImageView findViewByIdR.id.iM2;slider.animateOpen;Button next=按钮findViewByIdR.id.sama;next.setOnClickListenernew View.OnClickListener{public void onClickView View{imageView.setImageResourceR.drawable.samaq;所有其他按钮和图像也是如此