大家都知道android平台最初是由google推出的,然后google又主导成立了OHA继续推动android的发展。现在搜索应用可能是
使用率最高的一个,google最核心的产品就是搜索,因此android必定要搭载这个功能。本文就介绍一下android上的本地搜索框架。
要说本地搜索,首先就要介绍ContentProvider和ContentResolver这两个android上的重要组件。
ContentProvider
直译就是“内容提供者”,我觉得这个很形象,他就是一个类似于数据源的东西,帮助App或者说帮助整个平台
管理数据。因为android上app间的数据是相互独立的,一个app不可以直接访问另一个app的数据,有了ContentProvider这个机
制,不同app间就可以互相访问数据,而且还不破坏原有的独立性。
ContentResolver
App通过ContentProvider将自己的数据公开,其他App要访问这份数据就要通过
ContentResolver来获取对应的ContentProvider的远程访问方法,然后操作数据。ContentProvider和
ContentResolver之间是通过Binder机制连接的,各模块间关系如下图:
ContentProvider和ContentResolver都提供了一个query()方法,看到这个方法名字大家应该都清楚了,搜索功能就
是通过这个方法实现的。另外,Android上有一个SearchManager模块,是专门用于处理搜索请求的,每个App启动搜索功能时都要通过它。
Android上的搜索功能分三类:
1.网络搜索
2.App内部资源搜索
3.本地全局搜索
其中网络搜索功能没接触过,本文不涉及。
App内部资源搜索
这个功能主要就是应用了ContentProvider和ContentResolver这对组件,如下图:
一个App具有搜索功能,那么它必须有两类Activity:
SearchableActivity 可以启动搜索功能的Activity
QueryActivity 用于完成搜索和显示搜索结果的Activity
SearchableActivity
启动搜索功能时,会调用SearchManager,然后SearchDialog会被创建,就是我们看到的搜索框。在框中输入搜索关键字压下搜索键
后,SearchDialog会启动QueryActivity,ContentResolver的query()方法被调用,最后将搜索结果显示出来,
搜索结束。
本地全局搜索(GlobalSearch)
这个功能的实现主要也是通过ContentProvider和ContentResolver,如下图:
通过桌面上的搜索框widget启动本地全局搜索,同样会创建SearchDialog,SearchDialog将搜索请求发送到
GlobalSearch模块,GlobalSearch通过ContentResolver分别访问各个可检索App的
ContentProvider,最后经过一些异步处理将结果显示在屏幕上。
Android的本地检索功能完全是基于
ContentProvider的,也就是说如果一个App没有创建ContentProvider,这个App的数据就无法被搜索。而且搜索效率完全取
决于各个ContentProvider的query()方法的执行效率,我见过的大多数ContentProvider都是通过数据库实现的,因此搜索
的效率主要取决于Android的数据库sqlite。
本文仅仅描述了搜索功能的大体实现思路,源码还是比较复杂的,这里提到的只是九牛一毛。
http://blog.csdn.net/xiaohuanggougou/archive/2010/03/24/5414002.aspx
分享到:
相关推荐
在Android系统中,全局搜索(Global Search)是一个重要的特性,它允许用户通过单一的搜索框访问设备上的多种数据源,如应用内的内容、联系人、网页等。Android 13对这一功能进行了优化和更新,使得开发者能更好地...
《Android项目QuickSearch详解》 在移动开发领域,Android占据着重要的地位,为开发者提供了丰富的功能和自由度。本文将深入探讨一个名为“QuickSearch”的Android项目,这是一份专为初学者设计的代码资源,旨在...
《Android全局搜索与QuickSearchBox解析》 在Android系统中,QuickSearchBox(简称QSB)是一个核心组件,它提供了一种全局搜索的功能,让用户能够快速便捷地在多个数据源中搜索信息。本文将深入剖析Android原生的...
本项目“android_google_image_search”就是这样一个演示应用,它展示了如何在Android应用程序中集成Google图片搜索功能。 首先,要实现这个功能,开发者需要熟悉Android的网络编程。在Android中,通常使用...
本示例"aacc.rar_aacc_android Search demo"聚焦于Android的搜索功能,特别是如何集成和实现Google搜索服务。这个Demo是基于一本英文书籍的翻译,并进行了整合,目的是展示如何在Android应用中实现搜索功能。 首先...
《Android QuickSearchBox程序源码解析》 在Android操作系统中,QuickSearchBox(简称QSB)是一个非常重要的组件,它提供了全局搜索的功能,允许用户快速查找应用程序内的内容、联系人、网页以及其他各种信息。这份...
在这个"android voice search 语音识别例子"中,我们将探讨如何利用Android SDK和Google的语音识别API来创建一个能够接收和处理用户语音输入的应用。 首先,我们要了解Android的语音识别机制。Android系统内置了一...
《深入解析Android QuickSearchBox程序源码》 在Android系统中,QuickSearchBox(QSB)是一个非常重要的组件,它提供了全局搜索的功能,允许用户快速查找应用内的数据、联系人、网页以及更多其他内容。本篇文章将...
QuickSearchBox(QSB)是Android 4.0(API级别14)中的核心搜索组件,它提供了一个统一的搜索接口,用户可以通过这个接口搜索设备上的各种数据源,包括应用程序内的内容、联系人、网页等。这篇内容将深入探讨QSB的...
QuickSearchBox(QSB)是Android系统中的一个关键组件,它是Android设备上的全局搜索功能的基础。这个源码项目提供了一个深入理解Android全局搜索实现的绝佳机会,尤其对于那些正在做毕业设计或者研究Android应用...
Android Rapid Search Tool
Android Quick Search Panel
Android Fast Search Widget
通过设置`android:icon="@android:drawable/ic_menu_search"`和`android:actionViewClass="android.widget.SearchView"`来实现。 2. SearchView:SearchView是一个可扩展的视图,可以更灵活地自定义搜索界面。它...
QuickSearchBox(QSB)是Android操作系统中的一个核心组件,主要负责实现全局搜索功能。它允许用户在系统、应用程序和互联网上快速查找信息。通过分析这个程序的源码,我们可以深入理解Android系统的搜索机制和应用...
名称:Android SDK Search ---------------------------------------- 版本:0.3.16 作者:http://roman.nurik.net/ 分类:开发者工具 ---------------------------------------- 概述:添加一个'ad'omnibox命令并...
Android SDK Search Extension A Chrome extension that adds an 'ad' omnibox command and view source links for the Android SDK. The extension can be downloaded on the Chrome Web Store.
这个"Search-View-LayoutAndroid.zip"文件包含了关于在Android Lollipop(API级别21+)及以上版本中如何实现类似Dialer和Google Maps应用中的高级搜索视图和布局的示例代码。 1. **SearchView组件**:`SearchView`...
Android搜索框(SearchView)的功能和用法详解 Android搜索框(SearchView)是Android系统中的一种搜索组件,它允许用户在文本框中输入文字,并通过监听器取得用户的输入,当用户点击搜索时,监听器执行实际的搜索...
android搜索search自动提示功能,源码SearchInforView,该源码功能SearchView可以支持自定义效果实现的,该功能很容易修改或添加其他功能的,如果大家需要修改的话,只用简单地设置一下输入文字的变化监听即可了,...