保存来自Android服务器的图像的最佳方法

时间:2013-10-16 11:59:49

标签: android file bitmap android-sqlite android-image

我正在处理一个应用程序并从服务器获取产品图像。 目前我将这些图像转换为字节数组后将其保存到SQLite数据库中,在使用时我将它们转换回位图。

现在我有以下两个查询:

  1. 保存应用中的图片的最佳方式是什么,我们也可以同步它们,并在需要时获取。

  2. 如何在图像视图或按钮上分配它们,因为有时会出现内存问题并且应用程序突然停止。

  3. 请指导我。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:4)

在SD卡上存储应用特定内容可能不是正确的方法.. 您应该将图像存储在

// it will reside in data/data/com.package.name 
String path = getApplicationContext().getFilesDir() + "/";
File imagesFolder = new File(path);
imagesFolder.mkDir();

并将图像文件放在该文件夹中。因此可以删除SD卡依赖项。

答案 1 :(得分:3)

演示代码

package com.example.demo;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends Activity {
    private AQuery androidQuery;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView img = (ImageView) findViewById(R.id.img);
        androidQuery = new AQuery(this);
        androidQuery.id(img).image(imgUrl, true, true);// donload and save to sdcard if it is already in sdcard will not download again.

    }

}

答案 2 :(得分:2)

将它们保存为外部存储上的文件:

File downloadDir = new File(android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyAppName/MyImages");
if(!downloadDir.exists()){
   downloadDir.mkdirs();
}

将创建一个目录来存储图片。

然后查看此guide here如何仅为图片加载适量的像素。否则,您将获得OutOfMemory异常。 (5MP图片最多需要20MB的堆)