我应否使用外部存储来存储我的应用独有的数据?

提问

我的应用程序需要下载并保存大量图像和mp3.
这些仅对应用程序有意义,只有我的应用程序才能以有意义的方式使用它们.用户或其他应用程序将不知道如何处理他们.

我应该将它们保存在外部或内部存储中的什么位置?

我想将它们保留在内部存储器中,因为它们仅对应用程序有意义,并且在删除应用程序时它们将被清除.

但是,对于旧设备,内部存储器非常有限,我认为用户将这些文件保存在这里会很麻烦.
因此,我当时在考虑外部存储器,但是我不喜欢在删除应用程序之后将那些文件保留在其中的想法.

最佳做法是什么?

谢谢.

最佳答案

使用“ getExternalFilesDir(String type)”返回的路径

从文档中:

“将绝对路径返回到主外部文件系统(位于Environment.getExternalStorageDirectory()上的某个位置)上的目录的绝对路径,应用程序可以在该目录中放置其拥有的持久性文件.这些文件是应用程序的内部文件,通常对用户不可见媒体.

就像getFilesDir()一样,在卸载应用程序时,这些文件将被删除,但是有一些重要的区别:

外部文件并非始终可用:如果用户将外部存储设备安装在计算机上或将其删除,它们将消失.有关存储状态的信息,请参见环境上的API.这些文件没有强制实施安全性.例如,任何持有WRITE_EXTERNAL_STORAGE的应用程序都可以写入这些文件.”

有关更多详细信息:http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)

因此,是的,您可以使用外部存储并在卸载应用程序时删除文件(只要您对缺乏安全性感到满意).