我有一个库应用程序,我将每本书作为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