这是我写的从url到位图获取图像的方法,每当我使用Handler
向下滚动主视图时我都会运行
public void setimage(final ImageView imageview, final String urll,final int postion)
{
new Thread(new Runnable()
{
@Override
public void run()
{
URL url = null;
try {
url = new URL(urll);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
final Bitmap myBitmap = BitmapFactory.decodeStream(input);
handler.post(new Runnable()
{
@Override
public void run() {
imageview.setImageBitmap(Bitmap.createScaledBitmap(myBitmap, 160, 140, true));
}
});
web.get(postion).setImage(myBitmap);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}).start();
}
每当我向下滚动以查看logcat
java.lang.OutOfMemoryError android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
请让我知道我在哪里做错了
答案 0 :(得分:2)
您可以使用
请求使用更多内容android:largeHeap="true"
清单中的。
参考:How to solve java.lang.OutOfMemoryError trouble in Android
答案 1 :(得分:1)
答案 2 :(得分:1)
这两个答案真的不太好。大堆可能意味着什么。在某些设备上它会没问题,有些设备会赢。 Android不提供有关此堆有多大的任何信息。如果您的位图非常大,则应将其下载到ram内存中,而不是下载到flash(某些文件)。而不是立即阅读它缩小。在此方法中,您还可以免费使用缓存实现:)
请查看此文章http://developer.android.com/training/displaying-bitmaps/index.html
答案 3 :(得分:-1)
在放入此行之前设置位图
的System.gc();