Android中全局搜索(QuickSearchBox)詳解(一)

1. 全局搜索(QuickSearchBox)介紹:

全局搜索(QuickSearchBox)是Android系統中原生的應用程序,它的主要職能是接收用戶的搜索請求,並將搜索請求傳達給支持全局搜索的應用程序,應用程序執行搜索操作,並將搜索到的結果返回給全局搜索應用程序,全局搜索應用根據搜索結果渲染UI界面,當用戶單擊某一個搜索出來的結果項就會打開相應的應用程序,顯示搜索結果的詳細信息。

 

2. 全局搜索(QuickSearchBox)技術架構:

 

Android系統的全局搜索由搜索管理器(SearchManager),全局搜索AppWidget,全局搜索應用,支持全局搜索的應用程序(聯繫人,音樂,瀏覽器等)四大部分組成:

 

(1)framework層的搜索管理器(SearchManager):主要功能是對Android系統全局搜索提供支持,當Android系統啓動完成後會發出系統啓動完成(BOOT_COMPLETED)廣播,SearchManager接收到此廣播後會通過PackageManager搜索系統中支持全局搜索的應用程序(應用程序如何支持全局搜索以後的文章會介紹),這此支持全局搜索的應用我們稱爲搜索源,SearchManager解析搜索源的配置信息並將這些配置信息封裝成對象保存在List列表中供全局搜索應用程序使用。

 

(2)全局搜索AppWidget:AppWidget是搜索的入口,當用戶需要使用全局搜索時會單擊已經添加到桌面的全局搜索AppWidget,這時會打開全局搜索應用。

 

(3)全局搜索應用程序(QuickSearchBox):它的主要職能是接受用戶的輸入請求,啓動異步搜索,將搜索到的結果顯示。

 

(4)支持全局搜索的應用程序:每一個支持全局搜索的應用程序都需要實現一個ContentProvider,通過這個ContentProvider向外提供數據,全局搜索應用(QuickSearchBox)會調用這些ContentProvider獲取數據。

 

3. 搜索執行全過程:

 

Android系統啓動完成,發出系統啓動完成(BOOT_COMPLETED)廣播,搜索管理器(SearchManager + Service)接收到此廣播後會通過PackageManager搜索系統中支持全局搜索的應用程序,並解析這些應用程序的配置信息(配置信息中包括請求支持全局搜索應用的ContentProvider的authority及其它配置信息,這些配置信息由應用的開發人員配置),封裝成對象保存到List中,當用戶單擊Launcher中的全局搜索的AppWidget組件後打開全局搜索應用(QuickSearchBox)的主界面,在界面中的搜索輸入框中輸入搜索內容,這時全局搜索應用(QuickSearchBox)會從搜索管理器(SearchManager + Service)中取出全部支持全局搜索的應用程序List,並解析它們的配置信息,根據配置信息(authority等)組將成URI,要據URI調用支持全局搜索應用的ContentProvider,ContentProvider的查詢方法會根據URI搜索數據,並將搜索到的結果以Cursor型式返回,全局搜索應用會解決這些數據,並以List的形式顯示到UI界面中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章