gpt4 book ai didi

java - Android 在应用程序上下文中保存图像

转载 作者:行者123 更新时间:2023-12-02 03:52:16 24 4
gpt4 key购买 nike

在我的 MainActivity onCreate() 中,我想填充一个 ListView 。该 ListView 包含字符串和位图。

保存这些数据以便在应用程序重新启动时恢复它们的最佳方法是什么?

最佳答案

有我自己的缓存解决方案:

public class MyCache {

private String DiretoryName;

public void OpenOrCreateCache(Context _context, String _directoryName){
File file = new File(_context.getCacheDir().getAbsolutePath() + "/" + _directoryName);
if(!file.exists()){
file.mkdir();
}
DiretoryName = file.getAbsolutePath();
}

public void SaveBitmap(String fileName, Bitmap bmp){
try {
File file = new File(DiretoryName+ "/" + fileName);
if(file.exists()){
file.delete();
}
FileOutputStream Filestream = new FileOutputStream(DiretoryName + "/" + fileName);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
Filestream.write(byteArray);
Filestream.close();
bmp.recycle();
}
catch (Exception e){
e.printStackTrace();
}
}

public Bitmap OpenBitmap(String name){
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
File file = new File(DiretoryName+ "/" + name);
if(file.exists()) {
Bitmap bitmap = BitmapFactory.decodeFile(DiretoryName+ "/" + name, options);
return bitmap;
}
else{
return null;
}
}
catch (Exception e){
e.printStackTrace();
}
return null;
}

public void CleanCacheBitMap(){
File file = new File(Diretorio);
if(file.exists()){
file.delete();
}
}

}

创建时:

 @Override
protected void onCreate(Bundle savedInstanceState) {
...
cache = new MyCache();
cache.OpenOrCreateCache(this, "TheFolderNameForOpenOrSaveInAppCache");
}

并在运行时保存:

cache.SaveBitmap("BitMapName", YourBitmap);

并在运行时打开:

Bitmap bmp = cache.OpenBitmap("BitMapName");

此解决方案保存任何位图,特别是应用程序缓存(内部存储)中的文件夹。

关于java - Android 在应用程序上下文中保存图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35782546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com