从应用程序中清除数据时,Sqlite数据库被删除

8

我已经在应用程序中创建了Sqlite数据库。当我从设置->应用程序->管理应用程序清除数据时,Sqlite数据库会被删除。有什么建议可以保留sqlite数据库。


http://stackoverflow.com/questions/7806629/why-sqlite-database-cleared-on-clearing-data-of-application-from-application-man - Nermeen
我已经阅读了这篇文章。运行此帖子中提供的一个示例。它保存插入到DatabaseHelper类的onCreate方法中的数据。在运行应用程序后,我已经将记录插入到数据库中,然后再次清除数据,我的插入记录被删除了。@Nunu - Pankaj Kharche
是的,清除数据意味着删除数据库,因此当应用程序启动且找不到数据库时,它将再次创建它并插入在oncreate中存在的记录。 - Nermeen
但是当应用程序正在运行时插入的记录怎么办?我不能存储它们吗?@Nunu - Pankaj Kharche
你已经存储了它们,但是通过清除数据,你失去了它们。 - Nermeen
好的,谢谢您的回复。@Nunu - Pankaj Kharche
3个回答

15

当您从Android应用程序管理器中按下“清除数据”时,它应该删除与应用程序相关的所有内容,例如首选项、数据库、缓存等,唯一剩下的是应用程序,因此当您重新启动它时,它会表现得好像刚刚安装。

如果您想允许用户清除数据但保留数据库,则菜单中应该有一个选项,该选项将删除共享首选项但不对数据库执行任何操作。

希望这可以帮助到您。


“清理应用程序”是否可以删除数据库中的免费空间? - Pavel Poley
我认为清理应用程序只会清除不再使用的文件,例如临时文件、更新文件等。应用程序自己的文件,例如其数据库,只能由应用程序本身管理或通过Android应用程序管理器进行清除。清理应用程序可能具有清除应用程序数据的功能,但我认为它不可配置,它将是通过Android应用程序管理器清除数据的相同操作。 - Boardy

1
Android的SQLite旨在用于本地应用数据存储。当您选择清除应用程序的数据时,此数据将被清除(如预期)。
如果您想保留DB数据,请查看外部存储(例如Parse.com或MS的Azure)。您将进行网络调用,本地数据仍将被清除,并且您需要一种方法将应用程序重新链接到外部数据以进行本地清除后的操作(例如登录),但是您的外部数据将在应用程序数据清除后仍然存在。
“链接”部分也可以根据您的用例进行缓解,例如Google Play Games的数据服务与您的Google Play ID绑定,并将在应用程序清除后重新同步。

0
为什么用户想要清除所有数据时,您还想保留数据。不建议保留数据库。
我建议您使用SD卡存储图像/文本文件,并获得用户的适当权限。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接