如果没有(我持怀疑态度),那么我就必须每次都创建这些文件。我试图通过使它们永久存在来节省启动时间并占用所需的空间。
注意:我需要使用外部存储器,因此内部存储器或数据库都不适用。
"...../Android/data/APP_PACKAGE_NAME/"
APP_PACKAGE_NAME 是应用程序的包名。 另一个自动清空的路径是:
"...../Android/obb/APP_PACKAGE_NAME/" 其中 APP_PACKAGE_NAME 是应用程序的包名。
数据可用于任何您想要的内容。 obb 文件夹用于使用 Play 商店和 apk 扩展库 下载的大型文件。您不应在那里创建文件。
不,我不这么认为。只有您写入内部存储的文件才会在应用程序被卸载时删除(或者如果用户在“应用程序设置”应用中按下“清除数据”按钮)。
您的应用程序也无法接收到自己的PACKAGE_REMOVED
广播意图,因此您基本上没有被卸载的通知。
PACKAGE_*
事件,但是除了在应用程序升级时,你不会收到自己应用程序的这些事件 -- 你将会得到PACKAGE_REMOVED
紧随其后是PACKAGE_REPLACED
。 - Christopher Orr是的,这是可能的。只需将文件写入外部文件目录:
File dir = getExternalFilesDir(null);
这将在/Android/data/your.package/创建一个文件夹。请注意,这不是指sdcard中的External,但它是公共可访问的。如果用户卸载您的应用程序,此目录也将被删除,以及其中的所有内容。
内部存储:您的文件将被删除。
外部存储:如果您将文件写入根目录位于 getExternalFilesDir()
或 getExternalCacheDir()
的位置,您的文件将被删除。如果您将文件写入其他地方(例如 Environment.getExternalStoragePublicDirectory()
),则您的文件不会被删除。
可移动存储,在Android 4.4之前:可移动存储无法正式访问;如果您的文件出现在那里,当您的应用被卸载时,它不应被删除。
可移动存储,在Android 4.4及以后版本:据我所知,如果您写入支持的位置 (getExternalFilesDirs()
或 getExternalCacheDirs()
),则仅当该特定可移动存储位于卸载设备中的时间,您的文件才会被删除。
getExternalStorageDirectory()
不会删除其创建的文件,只会删除/Android/data/APP_PACKAGE_NAME/
中的文件,但我不知道如何应用它... - Compaq LE2202x/Android/data/APP_PACKAGE_NAME/
的方法是使用getExternalFilesDir()
,它相当于Android/data/data/your_package/
。这个方法来自于这里。 - Compaq LE2202x