出现内存不足错误,一个活动中的图像太多

时间:2014-02-25 16:38:54

标签: java android

我在“慢速”手机(512mb RAM)上出现内存错误。

我的应用程序在主要活动上有一些选项卡,在这些选项卡中有一些链接到webview的图像按钮。 我认为错误来自于一次加载所有图像,甚至是第一个选项卡上看不到的图像。我已经尝试了"android:largeHeap="true"",但它仍然崩溃。

任何人都可以帮助我让我的应用程序不加载图像,直到按下那些图像的选项卡?将可见性更改为INVISIBLE or GONE也无济于事。

编辑:

我正在将图片加载为按钮:

XML:

    <Button
    android:id="@+id/jn"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:layout_marginTop="3dp"
    android:background="@drawable/b_jn" />

JAVA:

    Button bjn = (Button) findViewById(R.id.jn);

    bjn.setOnClickListener(new View.OnClickListener() {

 @Override
     public void onClick(View v) {
 // TODO Auto-generated method stub
 startActivity(new Intent("applandia.quiosquedigitalfree.JN"));

        }
    });

现在我在同一个活动中连续约有50个。我不是专家编码员。

2 个答案:

答案 0 :(得分:0)

可以获得缩放位图或尝试其他选项,例如inSampleSize,请检查您的解决方案如何影响图像质量。

Esp for “..一次性加载所有图像,甚至是第一个标签上看不到的图像..”(我已经完成了以下类似的实现):登记/> 您可以使用inSampleSize加载所有图片并将原始图片替换为可见标签图片 - 这对于所选标签而言,动态加载图片时inSampleSize BitmapFactoryOptions android:largeHeap 1}}。

您可以根据不同的设备缩小它们以加载图像而不会遇到内存问题。 在您的情况下,某些手机在首次运行时可能不会表现出相同的行为,但最终,如果不处理优化的图像加载解决方案,应用程序将崩溃。

检查更多信息:

将缩小版本加载到内存中的主题。
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
Out of memory error on Android

关于如何避免它们:
How to avoid an out of memory error while using bitmaps in Android

概述:
http://blogs.innovationm.com/android-out-of-memory-error-causes-solution-and-best-practices/ http://android-developers.blogspot.de/2009/01/avoiding-memory-leaks.html

另外,{{1}}
android:largeHeap="true" convention?

答案 1 :(得分:-1)

嗯,有很多方法可以解决这个问题,对我而言更好的是使用“缓存图像加载器”,这是一个由Sergey Tarasevich创建的库,它非常有用。

https://github.com/nostra13/Android-Universal-Image-Loader

如果您希望像现在这样继续工作,那就是一个简单但难看的解决方案:

System.gc(),以便向系统表明您要进行垃圾收集(这将清理一些内存)。