我在“慢速”手机(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个。我不是专家编码员。
答案 0 :(得分:0)
可以获得缩放位图或尝试其他选项,例如inSampleSize
,请检查您的解决方案如何影响图像质量。
Esp for “..一次性加载所有图像,甚至是第一个标签上看不到的图像..”(我已经完成了以下类似的实现):登记/>
您可以使用inSampleSize
加载所有图片并将原始图片替换为可见标签图片 - 这对于所选标签而言,动态加载图片时inSampleSize
BitmapFactory
及Options
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(),以便向系统表明您要进行垃圾收集(这将清理一些内存)。