如果我正在编写的应用程序将一些文件永久存储到外部存储器(因此它们在应用程序退出[已销毁]后仍然存在)会很方便,但在卸载时我想做一些体面的事情并删除这些文件以释放存储空间。
有没有办法在卸载时删除这些文件?
如果没有(并且我持怀疑态度),那么我每次都必须创建这些文件。我试图节省启动时间,并通过永久存在来占用所需的空间。
注意:我需要使用外部存储,因此内部存储或数据库都不合适。
答案 0 :(得分:10)
android会自动删除外部存储中的应用程序文件,但文件必须位于应用程序的特定路径中:
“..... / Android设备/数据/ APP_PACKAGE_NAME /”
其中APP_PACKAGE_NAME是应用程序的包名称。 另一条自动清空的路径是:
“..... / Android设备/ OBB / APP_PACKAGE_NAME /” 其中APP_PACKAGE_NAME是应用程序的包名称。
数据适用于您想要的任何内容。 obb文件夹用于使用Play商店和apk extension library下载的大文件。你不应该在那里创建文件。
答案 1 :(得分:7)
不,我不相信。卸载应用程序时(或者如果用户按下应用程序设置应用程序中的“清除数据”按钮),将仅删除您写入内部存储的文件。
您的应用也无法收到自己的PACKAGE_REMOVED
广播意图,因此您基本上没有通知您正在卸载。
答案 2 :(得分:3)
是的,这是可能的。只需将文件写入外部文件目录:
File dir = getExternalFilesDir(null);
这将在/Android/data/your.package/创建一个文件夹。请注意,这不是 sdcard 中的外部,但可以公开访问。如果用户卸载了您的应用,则此目录也将被删除,以及其所有内容。
答案 3 :(得分:2)
内部存储:您的文件已删除
外部存储:如果您将文件写入以getExternalFilesDir()
或getExternalCacheDir()
为根的位置,则会删除您的文件。如果您将文件写入其他位置(例如Environment.getExternalStoragePublicDirectory()
),则不会删除您的文件
Android 4.4之前的可移动存储:可移动存储无法正式访问;如果您的文件在那里结束,则在卸载您的应用程序时不应删除该文件
可移动存储,Android 4.4 +:AFAIK,如果您写入受支持的位置(getExternalFilesDirs()
或getExternalCacheDirs()
),如果可移动存储的特定位于卸载时的设备