我有一个SearchView设置,并且我有一个使用Retrofit和Otto的松散解耦的体系结构。
我想知道最佳实践是用于安卓搜索的,还是一般的移动应用程序(这意味着类似的东西也可以应用于iOS )。
具体来说,我使用AutoCompleteTextView来处理SearchView中的建议,数据直接来自API。我不相信这是一个最佳实践,因为每次用户更改SearchView中的文本时,都会启动一个API调用。
我正在考虑在SQLite中存储一个缓存,然后从那里获取结果,但是如果用户想要最直接的数据呢?你会怎么处理呢?那会采用什么模式呢?
如果你对Android的最佳架构或搜索方法有任何想法,我将不胜感激。
发布于 2015-09-26 22:19:29
因此,要以充分的方式回答这个问题,因为我对这里的其他答案不满意,在这个问题上还有几个需要考虑的步骤。
首先,我们需要就如何处理这个问题提出几个问题:
还有很多问题。
我可能首先构建一个自定义适配器来处理搜索中的查询,然后对用户的查询实现积极的缓存。这一点很重要,因为用户的查询非常重要。只对Autocomplete使用缓存的结果可能是有意义的,实现自动完成并让它在每次文本更改时对服务器进行平压是非常昂贵的。
缓存可以通过使用Android中的SQLite助手来完成。这可能会很昂贵,但是我们正在处理简单的查询对象(因为从API中应该是这样,对象应该是内存或字节大小昂贵的)。
发布于 2015-07-07 18:47:52
我认为在用户停止输入之前进行API调用是没有意义的。所以,你可以延迟,比如说,500毫秒。当用户停止输入时,在500 an之后进行API调用并显示结果。
您可以使用Handler的postDelayed方法来调度搜索API调用。您可以使用Handler来控制消息队列。每次用户键入字符并取消先前的消息时,您都会发布一个延迟的Runnable。它看起来是这样的:
public void onTextChanged(CharSequence s, int start, int before, int count) {
handler.removeCallbacks(searchRunnable);
handler.postDelayed(searchRunnable, 500);
}发布于 2015-07-20 13:28:36
https://stackoverflow.com/questions/31276718
复制相似问题