Android |在哪里存储在 运行 时间从服务器获取的图像

Android | Where to store images fetched at run-time from server

我正在开发一个 Android 应用程序(类似于购物车),它倾向于获取(购物车目录项的)图像并将其存储在本地目录中供以后使用。 (由于网络连接受限,我无法在每次打开购物车时从服务器加载图片)

我找到了一种使用 Google 的毕加索库 (this link) 从服务器下载图像的方法。

卡住的地方是我不知道指定什么路径来存储图像。我打算为此专门创建一个目录,但不确定在哪里创建该路径(android 应用程序目录结构 post 安装?)。

我希望将它存储在我的应用程序的 res 目录中,但是一旦安装了应用程序,它会是一样的吗? 如果是,那么我如何在 运行 时间找到该路径?

如果您有更好的方法来做到这一点,我愿意接受建议。

谢谢。

在 android 中,您需要将它们存储为

内部存储如果你想在设备内存上存储私人数据。

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

外部存储 如果您想在共享外部存储上存储 public 数据。

/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

使用此功能在外部存储数据:

    private void SaveImage(Bitmap finalBitmap) {

    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/saved_images");    
    myDir.mkdirs();
    Random generator = new Random();
    int n = 10000;
    n = generator.nextInt(n);
    String fname = "Image-"+ n +".jpg";
    File file = new File (myDir, fname);
    if (file.exists ())
      file.delete (); 
    try {
        FileOutputStream out = new FileOutputStream(file);
        finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
        out.flush();
        out.close();

    } catch (Exception e) {
         e.printStackTrace();
    }
}

不要忘记添加权限。 资料来源: Android saving file to external storage https://developer.android.com/guide/topics/data/data-storage.html#filesInternal