我正在提取像这样的Drawable:
List<ResolveInfo> appsList;
appsList = pm.queryIntentActivities(new Intent(Intent.ACTION_MAIN)
.addCategory(Intent.CATEGORY_LAUNCHER),0);
然后:
Drawable drawableIcon;
Bitmap icon;
File file;
ResolveInfo ri;
for (int i = 0; i < appsList.size(); i++) {
ri = appsList.get(i);
drawableIcon = ri.loadIcon(pm);
//METHOD to convert Drawable to Bitmap
icon=drawableToBitmap(drawableIcon);
try {
file=new File(context.getFilesDir(),ri.activityInfo.packageName);
FileOutputStream fos = new FileOutputStream(file);
icon.compress(Bitmap.CompressFormat.PNG,100,fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
我正在检索和设置图像:
someView.setImageBitmap(BitmapFactory.decodeFile(context.getFilesDir()+"/"+cachingClass.appsList.get(position).activityInfo.packageName));
其中
位置
是一个变化的整数,
someView
是一个ImageView
someView.setImageDrawable()
代替。getFilesdir(),getCacheDir()
或SQLite或任何其他内容。假设50-200张大小为2-10 KB的图像,保存和检索的最快方法是什么; 答案 0 :(得分:1)
不知何故,我正在寻找一种方法来直接保存Drawables而不将它们转换为Bitmap
您无法保留Drawable
。 Drawable
是一个界面。
我可以用序列化的方式吗
Drawable
的某些实现可能是Serializable
。
这是一个好主意吗?
我怀疑它会起作用,更不用说可靠地工作了。不过,我们当然欢迎您试用它。
保存和检索的最快方法是什么
我会从不保存开始。考虑到您的副本在任何时候都可能过时(例如,应用更新),我无法看到您首先将这些内容写入磁盘的价值。当您需要图标时,请从PackageManager
。
如果您认为将这些映像保存到磁盘是必要的,那么简单的磁盘I / O就像您正在做的那样,应该比SQLite事务更快。