我有一個庫應用程序,我將每本書作爲SqliteDatabase存儲。我將所有book dbs保存在SD卡上。我的問題是,如果用戶卸載我的應用程序,然後做所有與此應用程序相關的數據庫被刪除?如果不是,我怎麼能做到這一點?卸載android應用程序是否刪除存儲在SD卡上的數據庫?
謝謝。
我有一個庫應用程序,我將每本書作爲SqliteDatabase存儲。我將所有book dbs保存在SD卡上。我的問題是,如果用戶卸載我的應用程序,然後做所有與此應用程序相關的數據庫被刪除?如果不是,我怎麼能做到這一點?卸載android應用程序是否刪除存儲在SD卡上的數據庫?
謝謝。
一般沒有實際。卸載時,/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應用程序,這使得持久性存儲的使用相當危險。
答案是是 ..一切都被刪除..包括SharedPreference
和db ..你不必自己實現它。對於更紅的.. http://developer.android.com/guide/topics/data/data-storage.html
這要看。如果您將文件放在外部存儲(SD卡)上的任意位置,則在您卸載應用程序後,它們不會被刪除。如果您使用getExternalFilesDir()
(Android 2.2+)獲取目錄來存儲您的文件,它們將在應用程序卸載時被刪除。在Froyo的一些早期版本中,顯然存在一個即使在應用程序升級時也會刪除文件的錯誤,所以您可能需要注意這一點。
好吧,那麼如何以及在哪裏存儲這些文件以避免這種不可預知的行爲?如果存儲在內部存儲上,它很快就會被填滿,並開始給出SqliteFullException。存儲大量文件的最佳選擇是什麼? – techno
我使用/sdcard/data/com.example.app。這是一致的,因爲它不會在卸載或更新時被刪除。而且它不在根層面,所以用戶不會討厭它留下的混亂。而不是硬編碼「/ sdcard」,使用Environment.getExternalStorageDirectory()並追加/ data /和包名稱。 –
所以,如果我使用/sdcard/data/com.example.app,那麼所有的dbs在卸載時都會被刪除,對吧?另外,用戶可以訪問這些文件嗎? – techno