【问题标题】:Best way to save images which comes from server in android在android中保存来自服务器的图像的最佳方法
【发布时间】:2023-03-10 06:00:01
【问题描述】:

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

现在我有以下两个查询:

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

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

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

【问题讨论】:

  • 在 sqlite 中存储 blob 是不好的做法。而是将图像存储在 sdcard 上。并将图像的路径存储在数据库中而不是字节数组中。
  • @BirajZalavadia 好的,您能否为此提供任何有用的样本。还有第二期呢?
  • 第二个问题是由于 blob 引起的。因为它需要更多的内存来序列化和反序列化这个字节对象。
  • 我正在为这个场景使用androidquery框架。你可以从这里下载jar code.google.com/p/android-query/downloads/list
  • @BirajZalavadia 谢谢,但请告诉我这个 .jar 文件的目的是什么?以及如何使用它?

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


【解决方案1】:

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

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

并将图像文件放在该文件夹中.. 这样就可以删除 SD 卡依赖项。

【讨论】:

    【解决方案2】:

    演示代码

    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.
    
        }
    
    }
    

    【讨论】:

      【解决方案3】:

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

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

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

      然后查看guide here 如何为您的图像仅加载适量的像素。否则你会得到一个 OutOfMemory 异常。 (5MP 图片最多占用 20MB 的堆空间)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-13
        • 1970-01-01
        • 1970-01-01
        • 2021-11-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多