在sqlite下载后更新ContentProvider

时间:2014-08-05 01:39:14

标签: java android sqlite android-contentprovider

我的一些应用内容以sqlite数据库的形式从网络中下载。

下载后,此数据库会提供商店列表。

我遇到的问题是,在下载sqlite数据库之前,应用程序启动时会调用ContentProvider的onCreate()方法。

我现在正在测试,但是当我转到我的AutoCompleteTextView并开始键入我的应用程序崩溃时,可能是因为在启动ContentProvider时数据库不可用。

当我重新打开应用程序时,一切都按预期工作。

下载完成后,我可以做些什么来重新加载数据库吗?我遇到了麻烦,因为在AutoCompleteTextView我正在使用CursorLoader的片段中,所以我没有实例化ContentProvider ......我只是使用了加载器。因此,我无法调用ContentProvider.reloadDatabase()等内容。

我发现有一件事是关闭 - 在ContentProvider中的.query()方法中重新打开数据库。但这是非常低效的,因为每次在AutoCompleteTextView中键入新字符时都会调用它。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

为了实现这一点,我最终向我的sqlite-updater添加了一个监听器方法(扩展了AsyncTask)。下载完成后,它会调用侦听器方法并更新contentprovider