如何在手动删除数据库时强制内容提供者重置
在我的应用程序中,我使用CursorLoader将一个ContentProvider附加到数据库中的表中,该CursorLoader在我的一个活动中填充了一个ListView。 此表默认填充为空,并填充用户输入数据。 我希望允许用户完全删除所有存储的数据,并且在选择此选项时删除整个数据库。 然后,当用户再次开始使用应用程序时,数据库将以其默认状态重新创建,就像他们第一次使用该应用程序时一样。
我的问题是,当我删除数据库时,ContentProvider没有检测到数据库被删除,当我回到我的listview活动时,列表仍然存在。 我也让应用程序完全重新加载ListView活动,而不是从内存中恢复,即使数据库为空,列表仍然存在。 我可以让ContentProvider重新加载的唯一方法是在系统设置中杀死应用程序,然后再次打开它。
有没有办法强制重启ContentProvider或者告诉它数据已经从ContentProvider类本身之外更新了?
您也可以简单地使用内容提供者的删除方法而不用定义选择:
context.getContentResolver().delete(YourProvider.CONTENT_URI, null, null);
我在这里找到了解决我的问题的解决方案:https://stackoverflow.com/a/8235584/1943155
我在我的ContentProvider类的onCreate中获取了dbHelper,就像在其他文章中一样,并且在每种方法中获取了一个新的dbHelper都解决了我的问题。
你想用cursorAdapter填充listview,并在contentProvider中的内容改变时通知游标。
在contentProvider实现的delete方法中,调用contentResolver.notify。 这将通知由contentResolver调用填充的游标数据发生了变化。
链接地址: http://www.djcxy.com/p/71003.html上一篇: How to force a content provider to reset when manually deleting database