我的应用程序允许用户使用相机拍摄照片并将其保存为他们的个人资料照片。一次只能存储一个图像?Android - 在设备上存储图像?
- 为此目的使用SharedPrefertences是一个坏主意,虽然我只存储1个图像? (将图像转换为Base64)。有什么缺点?
- 如果使用共享偏好来存储图像不是一个好主意,有什么选择?
我的应用程序允许用户使用相机拍摄照片并将其保存为他们的个人资料照片。一次只能存储一个图像?Android - 在设备上存储图像?
我认为在SharedPreferences中存储二进制数据不是一个好主意。而是将其保存到文件系统。例如,如果数据来自InputStream:
storeImage(new File(context.getFilesDir().getAbsolutePath() + fileDir),
is,
"profile.png");
public static void storeImage(
File fileDir,
InputStream inputStream,
String fileName) throws IOException {
File file = new File(fileDir,fileName);
FileOutputStream fos = new FileOutputStream(file);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
inputStream.close();
fos.close();
bitmap.recycle();
bitmap = null;
}
其中上下文可以是应用程序/活动上下文。
[apply](http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply())提供的简单后台工作如何? “您不必担心Android组件生命周期以及与apply()写入磁盘的交互,该框架确保在切换状态之前从apply()完成正在进行的磁盘写入。”当你进入文件系统级别时,你可以阻止你的主线程处理线程。 –