android - 处理搜索的最佳实践

标签 android search searchview otto

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

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

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

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

如果您对 Android 中搜索的最佳架构或方法有任何想法,我们将不胜感激。

最佳答案

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

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

public void onTextChanged(CharSequence s, int start, int before, int count) {
    handler.removeCallbacks(searchRunnable);
    handler.postDelayed(searchRunnable, 500);
}

关于android - 处理搜索的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31276718/

相关文章:

Android,多个可搜索 Activity ?

java - 如何将光标(android)放入二维数组?

java - 停止可运行程序

Android 应用程序因 SIG 9 而崩溃

android 搜索对话框不工作

php - 细化搜索结果 [PHP/MySQL]

Android 操作栏替代品

c# - 如何将mp3文件存入硬盘并保持性能

android - 搜索 View onQueryTextChange 问题

android - SearchView.OnQueryTextListener 方法 onQueryTextChange 在调用 onPrepareOptionsMenu 时触发