Gre*_*OBO 5 performance android android-keypad android-search
我正在使用android.support.v7.widget.SearchView,我正在搜索SearchView中的每个字符的输入.以下是片段.
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
{
@Override
public boolean onQueryTextSubmit(String query)
{
return false;
}
@Override
public boolean onQueryTextChange(String newText)
{
if (!newText.trim().equals(""))
{
displayResult(newText);
return false;
}
}
});
Run Code Online (Sandbox Code Playgroud)
当我获得结果时,我正在更新UI,因此在我的情况下,每当用户输入单个字符时,它将调用Search API.因此,假设用户想要搜索"澳大利亚"并尝试输入整个单词,但我的UI正在使用搜索进行更新,而用户只是在键盘没有响应后键入"Aus",因为它正在更新UI.
所以我想只是想在更新UI时回复键盘.
希望我会得到快速反应.
问题的关键是使用搜索 API 的结果更新 UI 操作以及使用键盘响应 SearchView 都是在Main(UI) Thread中完成其工作。
简而言之,你让主线程在短时间内做了太多的事情。
所以解决办法就是尽量限制更新UI操作的频率。我的意思是,当用户在短时间内连续输入单词时,您应该让该displayResult(newText)方法可以取消先前的调用。
当整个单词完全输入后,只需用结果更新 UI一次。Australia
顺便说一句,您的搜索 API 调用应该在后台线程中使用一些精彩的库(Retrofit && OkHttp)进行。
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |