2012-07-30 75 views
1

我正在开发一个应用程序,它创建菜单,每个菜单项都有自己的图标。每个菜单项都有太多的PNG文件。将来,我将更新WebService中的菜单项,并将添加到这些png文件中。管理Android应用程序中的图标PNG文件

什么是存储这些数据(PNG文件)的最有效方式。我不想将它保存在可绘制的文件夹中,因为我在发布应用程序后无法更新可绘制文件夹的内容。如果我将它存储在外部存储器上,我该如何实现这一点?我应该在哪里复制这些PNG文件,并将它们用作我的代码中的资源。

谢谢

回答

1

将它们作为BLOBs存储在sqLite中。

+0

它会使数据库变慢,会有类别,然后是类别内的项目的图像。 – Hakeem 2012-07-30 21:04:24

+0

哪个数据库Hakeem?使用GUID将图像存储在单独的数据库中。引用guid。问题解决了。 SQLite无非是一个文件。 – 2012-07-30 21:06:14

+0

+你怎么知道它会使它缓慢呢?您是否检查过sqLite的查询计划? – 2012-07-30 21:08:31

0

您可以写信给分配给使用这个http://developer.android.com/reference/android/content/Context.html#openFileOutput(java.lang.String,int)方法您的应用程序的私人空间和回读与它的兄弟姐妹。

InputStream is = your input stream 
OutputStream os = mContext.openFileOutput("image.png",Context.MODE_PRIVATE); 

Utils.copyStream(is,os); //Your own steam copy here 

is.close; 
os.close; 
+0

当我将这个空间分配给我的应用程序时,是否需要首次存储所有数据?在编译时我无法获得这个空间吗? – Hakeem 2012-07-30 21:53:53

+0

没有最好的方法来做到这一点是让你的资产文件夹中的所有内置图标,并在第一次运行时将它们复制到这个位置。或者你可以用你装载文件的方式来包装,这样你首先打开'mContext.openFileInput(...)',如果失败了,尝试用'mContext.getAssets()打开它的资产。 )' – Bostwickenator 2012-07-31 00:02:18

+0

非常感谢。我会尝试这个解决方案。 – Hakeem 2012-07-31 10:02:44