处理搜索的最佳实践



我有一个SearchView设置,我有一个使用RetrofitOtto的松散解耦架构。

我想知道什么最佳实践是在Android搜索,或一般的任何移动应用程序(意思是这样的东西也可以应用于iOS)。

具体来说,我使用AutoCompleteTextView来处理我的SearchView中的建议,数据直接来自API。我不认为这是最佳实践,因为每次用户更改SearchView中的文本时,都会启动API调用。

我正在考虑在SQLite中存储缓存,然后从那里ping结果,但是如果用户想要最直接的数据呢?你会怎么处理?那会采用什么模式呢?

对于Android中搜索的最佳架构或方法,我将非常感谢。

我认为在用户停止输入之前进行API调用是没有意义的。因此,您可以设置延迟,比如500ms。当用户停止输入时,在500ms后,您可以调用API并显示结果。

您可以使用HandlerpostDelayed方法来调度搜索API调用。您可以使用Handler来控制消息队列。每次用户键入一个字符并取消之前的消息时,都会发布一个延迟的Runnable。它看起来是这样的:

public void onTextChanged(CharSequence s, int start, int before, int count) {
    handler.removeCallbacks(searchRunnable);
    handler.postDelayed(searchRunnable, 500);
}
  • 首先,你必须使列作为索引,这是搜索属性。
  • 你必须只存储该列在sqlite数据库。它用于在用户进行搜索时从表中选择选项。
  • 然后在搜索栏中选择单词后调用api获取搜索结果。

因此,为了充分地回答这个问题,因为我对这里的其他答案不满意,在这个问题中还有几个步骤需要考虑。

首先,我们需要问一些关于如何处理这个问题的问题:

    有自动补全吗?
  • 搜索的范围是什么?
  • 有缓存吗?

还有很多问题。

我可能会首先构建一个自定义适配器来处理搜索中的查询,然后在用户的查询上实现主动缓存。这一点很重要,因为用户的查询非常重要。这可能是有意义的,只使用Autocomplete缓存的结果,它是非常昂贵的实现自动完成,并让它ping服务器在每次文本更改。

缓存可以通过在Android中使用SQLite助手来完成。这可能是昂贵的,但我们正在处理简单的查询对象,(因为这应该是API的情况,对象应该是内存或字节大小昂贵的)。

相关内容

  • 没有找到相关文章

最新更新