And*_*oid 12 search android searchview otto
我有一个SearchView
设置,我有一个松散的解耦架构使用Retrofit
和Otto
.
我想知道Android中的搜索或者任何移动应用程序的最佳实践是什么(意味着类似的东西也可以应用于iOS).
具体来说,我正在使用一个AutoCompleteTextView
来处理我的建议,SearchView
数据直接来自API
.我不相信这是一种最佳实践,因为每次用户更改文本时SearchView
都会启动API调用.
我正在考虑在SQLite中存储一个Cache然后从那里ping结果,但是如果用户想要最直接的数据呢?你会怎么处理?采用什么样的模式?
非常感谢有关Android中搜索的最佳架构或方法的任何想法.
Gen*_*kin 10
我认为在用户停止输入之前进行API调用是没有意义的.所以,你可以延迟500毫秒.当用户停止输入时,在500ms后您进行API调用并显示结果.
您可以使用Handler
的postDelayed
调度搜索API调用方法.您可以使用Handler来控制消息队列.Runnable
每次用户键入字符并取消以前的消息时,您都会发布延迟.看起来会这样:
public void onTextChanged(CharSequence s, int start, int before, int count) {
handler.removeCallbacks(searchRunnable);
handler.postDelayed(searchRunnable, 500);
}
Run Code Online (Sandbox Code Playgroud)
因此,为了以充分的方式回答这个问题,因为我对这里的其他答案不满意,所以在这个问题上还需要考虑几个步骤。
首先我们需要问几个关于如何解决这个问题的问题:
还有更多问题。
我可能会首先构建一个自定义适配器来处理搜索中的查询,然后对用户的查询实施积极的缓存。从用户的查询非常重要的意义上来说,这一点很重要。仅使用缓存结果可能是有意义的,因为Autocomplete
实现自动完成并在每次文本更改时都对服务器进行 ping 操作的成本非常高。
SQLite
缓存可以通过使用Android 中的助手来完成。这可能很昂贵,但我们正在处理简单的查询对象(因为从 API 来看应该是这种情况,对象应该是内存或字节大小昂贵的)。
归档时间: |
|
查看次数: |
1406 次 |
最近记录: |