2011-08-19 73 views

回答

9

一般没有实际。卸载时,/data/data/com.example.app中的APK本身(/data/app/com.example.app-1.apk)和数据(sharedprefs/db/etc)将被删除,但只有Android > = 2.2也会从SD卡中删除任何东西,并且只有特定的目录(通常为/sdcard/Android/data/com.example.app)。

但是,某些早期版本的Froyo也会使用delete when updating应用程序,这使得持久性存储的使用相当危险。

+0

好吧,那么如何以及在哪里存储这些文件以避免这种不可预知的行为?如果存储在内部存储上,它很快就会被填满,并开始给出SqliteFullException。存储大量文件的最佳选择是什么? – techno

+0

我使用/sdcard/data/com.example.app。这是一致的,因为它不会在卸载或更新时被删除。而且它不在根层面,所以用户不会讨厌它留下的混乱。而不是硬编码“/ sdcard”,使用Environment.getExternalStorageDirectory()并追加/ data /和包名称。 –

+0

所以,如果我使用/sdcard/data/com.example.app,那么所有的dbs在卸载时都会被删除,对吧?另外,用户可以访问这些文件吗? – techno

2

这要看。如果您将文件放在外部存储(SD卡)上的任意位置,则在您卸载应用程序后,它们不会被删除。如果您使用getExternalFilesDir()(Android 2.2+)获取目录来存储您的文件,它们将在应用程序卸载时被删除。在Froyo的一些早期版本中,显然存在一个即使在应用程序升级时也会删除文件的错误,所以您可能需要注意这一点。

相关问题