相关疑难解决方法(0)

java.lang.OutOfMemoryError:位图大小超过VM预算 - Android

我开发了一个在Android上使用大量图像的应用程序.

该应用程序运行一次,填满屏幕上的信息(Layouts,Listviews,Textviews,ImageViews,等)和用户读取的信息.

没有动画,没有特效或任何可以填充内存的东西.有时候抽屉可以改变.有些是android资源,有些是保存在SDCARD文件夹中的文件.

然后用户退出(该onDestroy方法被执行并且app由VM保持在内存中)然后在某个时刻用户再次进入.

每次用户进入应用程序时,我都可以看到内存越来越多,直到用户获得java.lang.OutOfMemoryError.

那么处理许多图像的最佳/正确方法是什么?

我应该把它们放在静态方法中,这样它们就不会一直装载吗?我是否必须以特殊方式清洁布局或布局中使用的图像?

memory android memory-leaks bitmap out-of-memory

157
推荐指数
7
解决办法
11万
查看次数

在Android上下载imageview的图像

我已经看到了这个问题:android如何下载1mb图像文件并设置为ImageView
它没有解决我的问题,因为它只显示了你已经拥有它如何显示位图.

我正在尝试从URL下载图像,以便在Android设备上显示ImageView.我不知道该怎么做.

我在互联网上看了一下,这是我到目前为止的代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //Set local image
    ImageView image = (ImageView) findViewById(R.id.test_image);
    image.setImageResource(R.drawable.test2);

    //Prepare to download image
    URL url;        
    InputStream in;

    //BufferedInputStream buf;
    try {
        url = new URL("http://i.imgur.com/CQzlM.jpg");
        in = url.openStream();

        out = new BufferedOutputStream(new FileOutputStream("testImage.jpg"));
        int i;

         while ((i = in.read()) != -1) {
             out.write(i);
         }
         out.close();
         in.close();

        buf = new BufferedInputStream(in);
        Bitmap bMap = BitmapFactory.decodeStream(buf);
        image.setImageBitmap(bMap);
        if (in != null) {
        in.close();
        }
        if (buf != null) …
Run Code Online (Sandbox Code Playgroud)

android download android-imageview

5
推荐指数
1
解决办法
2万
查看次数