CSDNhttps://mp.csdn.net/mp_blog/creation/editor/122347672
上文搜索界面实现中讲述的SearchFeatureProvider.java中有一个indexSliceDataAsync()方法,跟踪代码可以看到其对数据库也有操作,会有初始化数据库的动作。但是该操作初始化的数据库并不是目前我们将要使用的数据库。
当点击事件触发以后跳转至搜索页面,SearchActivity.java中可以卡看到加载新的fragment--SearchFragment,并且调用updateIndexAsync方法初始化数据库 。
但是在这里调用的SearchFeatureProvider中的updateIndexAsync并没实际的操作,但是他的子类SearchFeatureProviderIpml对其进行重写增加具体操作方法。
并且调用DatabaseIndexingManager.java中的indexDatabase方法开启一个异步任务,来执行初始化操作。在performIndexing中首先通过intent获得所需providers,然后遍历providers获得需要存储至数据库中的数据,然后将解析得到的数据存入数据库。
在上图的代码段中可以看到在performIndexing中通过intent获得所需providers,具体的proviers代码如下所示,改文件配置在Settings的AndroidManifest.xml文件中;
通过getIndexDataFromProviders方法解析ContentProvider中的数据。然后将解析得到的数据保存到数据库。
在这里主要是将数据解析,解析为IndexData的数据集。之后再将其存入数据库中。以上就是在数据框中输入数据进行搜索前的数据初始化操作。



