搜索机制(Search)概述

搜索是Android为用户提供的核心功能之一.用户应该可以搜索任何对他们有用的数据,不管该内容是在本地的还是在网络上的. 为了向用户提供统一风格的搜索体验,Android提供了一个search framework,可以帮助我们为APP实现搜索功能. 下图是可以给用户提供搜索建议的搜索框快照:

Search framework为我们提供了两种可以用于搜索的方法:一种是在屏幕顶端的搜索框,还有就是使用可以嵌入activity layout的SearchView.我们还可以为搜索框提供搜索建议,就好像上图显示的那样.Android会为我们的搜索框提供一些辅助功能, 不管使用哪种方式, 我们都可以:

  • 可以使用声音搜索.

  • 根据用户最近搜索提供搜索建议.

  • 根据APP中的特定数据提供搜索建议.

  • 在Android的全系统搜索框中提供APP的搜索建议.

Search framework并不提供搜索我们的数据的API.想要处理搜索的话, 我们需要对自己的数据提供相应的API. 比如, 如果我们的数据存放在SQLite中,我们应该使用android.database.sqlite的API来处理搜索.此外也不能保证一个设备提供一个专门的搜索按钮用于我们的APP的搜索界面.当使用搜索框或者自定义接口的时候我们必须提供一个自己UI内部的搜索接口.

关于保护用户的隐私

在实现搜索功能的时候我们应该考虑到用户的隐私, 至少应该考虑到这些:

  • 不要发送用户的个人信息到服务器,如果必须这样的话,不要记录它.个人信息是可以用于识别用户的任何信息, 比如名字, email地址,账单信息,或者其他可以连接到这些信息的信息.如果我们的APP需要服务器的协助完成搜索功能, 请避免搜索信息和个人信息捆绑一起发送. 比如:如果你需要搜索某个邮政区号内的商家, 我们不应该发送用户ID, 只要发送邮政区号即可.如果我们必须发送个人信息,那么不应该记录这些信息.如果必须记录这些信息, 那么应该非常细心的保护它们, 并且应该尽快删除.

  • 为用户提供删除搜索记录的方法.

    Search framework在用户输入的时候帮我们的APP提供了针对具体内容的建议.有时候这些建议是基于之前的搜索或者用户之前的操作的. 用户或许不希望自己的搜索记录被该设备的其他用户知道(比如一起分享设备的朋友家人等). 如果我们的APP有可以根据搜索历史提供的搜索建议,那么我们应该提供给用户删除之前搜索记录的功能. 如果我们使用的是SearchRecentSuggestions,那么我们可以直接调用clearHistory()方法来删除这些记录. 如果我们自己实现了自定义的搜索建议, 我们需要提供类似”清除搜索数据”的功能.

Copyright© 2020-2022 li-xyz 冀ICP备2022001112号-1