我有一个SearchView
设置,我使用Retrofit
和Otto
建立了松散的分离架构。
我想知道最佳做法对于Android中的搜索或一般的任何移动应用程序(意味着类似的东西也可以应用于iOS)是什么。
具体而言,我使用AutoCompleteTextView
来处理SearchView
中的建议,数据直接来自API
。我不认为这是最佳做法,因为每次用户更改SearchView
中的文本时都会启动API调用。
我正在考虑在SQLite中存储缓存,然后从那里ping结果,但如果用户想要最直接的数据呢?你会怎么处理?采用什么模式?
非常感谢有关Android中搜索的最佳架构或方法的任何想法。
答案 0 :(得分:10)
我认为在用户停止输入之前进行API调用是没有意义的。所以,你可以延迟500毫秒。当用户停止输入时,在500毫秒后,您进行API调用并显示结果。
您可以使用Handler
的{{1}}方法来安排搜索API调用。您可以使用Handler来控制消息队列。每次用户键入字符并取消之前的消息时,您都会发布延迟postDelayed
。看起来会这样:
Runnable
答案 1 :(得分:1)
答案 2 :(得分:0)
所以要以充分的方式回答这个问题,因为我对这里的其他答案不满意,在这个问题上还有一些步骤需要考虑。
首先,我们需要就如何解决这个问题提出几个问题:
还有更多问题。
我可能首先构建一个自定义适配器来处理搜索中的查询,然后对用户的查询实施积极的缓存。从用户的查询非常重要的角度来看,这很重要。仅使用Autocomplete
的缓存结果可能是有意义的,实现自动完成并在每次文本更改时ping服务器都非常昂贵。
可以使用Android中的SQLite
助手来完成缓存。这可能很昂贵,但我们正在处理简单的查询对象(因为这应该是API的情况,对象应该是内存或字节大小昂贵)。