2011-08-19 72 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的一些早期版本中,顯然存在一個即使在應用程序升級時也會刪除文件的錯誤,所以您可能需要注意這一點。

相關問題