我正在开发一个应用程序并从服务器获取产品图像。目前,我将这些图像转换为字节数组后将它们保存到 SQLite 数据库中,并在使用时将它们转换回位图。
现在我有以下两个查询:
将图像保存在应用程序中的最佳方式是什么,我们也可以从中同步它们并在需要时获取。
如何在图像视图或按钮上分配它们,因为有时会出现内存问题并且应用程序突然停止。
请指导我。任何帮助表示赞赏。
我正在开发一个应用程序并从服务器获取产品图像。目前,我将这些图像转换为字节数组后将它们保存到 SQLite 数据库中,并在使用时将它们转换回位图。
现在我有以下两个查询:
将图像保存在应用程序中的最佳方式是什么,我们也可以从中同步它们并在需要时获取。
如何在图像视图或按钮上分配它们,因为有时会出现内存问题并且应用程序突然停止。
请指导我。任何帮助表示赞赏。
在 SD 卡上存储应用程序特定的东西可能不是正确的方法。你应该将图像存储在
// it will reside in data/data/com.package.name
String path = getApplicationContext().getFilesDir() + "/";
File imagesFolder = new File(path);
imagesFolder.mkDir();
并将图像文件放在该文件夹中。因此可以删除 SD 卡依赖项。
演示代码
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.
}
}
将它们保存为外部存储上的文件:
File downloadDir = new File(android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyAppName/MyImages");
if(!downloadDir.exists()){
downloadDir.mkdirs();
}
将创建一个目录来存储图片。
然后在此处查看本指南如何为您的图像仅加载适量的像素。否则你会得到一个 OutOfMemory 异常。(5MP 图片将占用 20MB 的堆空间)