我的一些应用内容以sqlite数据库的形式从网络中下载。
下载后,此数据库会提供商店列表。
我遇到的问题是,在下载sqlite数据库之前,应用程序启动时会调用ContentProvider的onCreate()方法。
我现在正在测试,但是当我转到我的AutoCompleteTextView并开始键入我的应用程序崩溃时,可能是因为在启动ContentProvider时数据库不可用。
当我重新打开应用程序时,一切都按预期工作。
下载完成后,我可以做些什么来重新加载数据库吗?我遇到了麻烦,因为在AutoCompleteTextView我正在使用CursorLoader的片段中,所以我没有实例化ContentProvider ......我只是使用了加载器。因此,我无法调用ContentProvider.reloadDatabase()等内容。
我发现有一件事是关闭 - 在ContentProvider中的.query()方法中重新打开数据库。但这是非常低效的,因为每次在AutoCompleteTextView中键入新字符时都会调用它。
非常感谢任何帮助。
答案 0 :(得分:0)
为了实现这一点,我最终向我的sqlite-updater添加了一个监听器方法(扩展了AsyncTask)。下载完成后,它会调用侦听器方法并更新contentprovider