2011-06-26 63 views
0

我的Android应用程序只下载第一份午餐的数据。该数据是~50 MB与〜2500文件。
1.如果文件是在SharedSettings中下载的,是否存储是一个好主意?问题是,如果用户清除数据应用程序(可能是错误的),他必须重新下载所有内容。我手动复制预先装好的数据库/data/data/../databases/,它是一个好主意,检查是否存在数据库,如果没有那么下载的一切?:检查文件夹和所有数据是否已经存在

if(new File(/data/data/../databases/myDB.db).exists){//dont download} 

2.Is得到文件夹的大小,并检查它是否是一个很好的方式来查看文件夹+数据是否好?还是有更好的方法来检查2个文件夹是否相同?
谢谢。

回答

1

不,请勿将50MB的数据放入SharedSettings。这将会倒下并死亡。一组SharedSettings以XML形式存储在磁盘上,并在打开时全部加载到RAM中。这也不会阻止用户清除这些数据。

为了确定数据是否已被下载,我建议您在下载完成后创建一个文件,表明它已完成。用户不能有选择地删除文件。他们可以清除你的数据,但是这也会清除标记文件,你会知道你需要重新下载。 (同时请记住,你将需要处理的重新启动,如果它在中间被中断下载。)

还要确保你正确地处理文件系统操作如下所述:http://android-developers.blogspot.com/2010/12/saving-data-safely.html

+0

相当肯定,他说,他被存储-if-文件是在sharedprefs下载,就像一个布尔旗。不是实际的数据。这将是一个体面的解决方案。如果用户清除了应用程序数据,那么您可能想重申他们没有清除其他任何内容,即时通讯。 – Eric

+0

是啊哈哈我的意思是存储一个布尔值(如埃里克说)..谢谢你的回答 – Omar

0

另一种想法,如果你”重新担心丢失的数据文件...如果您的应用在任何时候查找文件并且它不存在,请抛出异常,将其传递给显示对话框并“验证”数据的处理程序。您可以保留所有需要的数据文件的列表,然后只下载不存在的数据文件。就像系统检查一样,如果你愿意的话。

这样,他们最终不会下载50MB,如果他们唯一缺少的,他们在探险家根;-)意外删除一些文件

+0

不错的建议,谢谢你的答案。 – Omar