该计划需要尽可能少的滞后。不幸的是,下面代码中的inputWord.setText("");
会略有滞后。反正有没有解决这个滞后?非常感谢帮助。
public void addInputWordListener(){
inputWord.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if(s.toString().equals("")){
topView.setTextColor(Color.WHITE);
return;
}
if (s.toString().endsWith(" ")){ //submitting a word
token = s.toString().trim();
System.out.println("1");
if (token.equalsIgnoreCase(topView.getText().toString())){
System.out.println("2");
inputWord.setText("");
System.out.println("3");
topView.setText(midView.getText());
System.out.println("4");
midView.setText(botView.getText());
System.out.println("5");
botView.setText(MainMenu.we.nextWord());
System.out.println("6");
}else
{
topView.setTextColor(Color.RED);
}
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
}
以下是可疑运行的LogCat输出:
04-07 02:41:10.539: I/System.out(13152): 1
04-07 02:41:10.539: I/System.out(13152): 2
04-07 02:41:10.549: I/System.out(13152): 3
04-07 02:41:10.549: I/System.out(13152): 4
04-07 02:41:10.549: I/System.out(13152): 5
04-07 02:41:10.549: I/System.out(13152): 6
答案 0 :(得分:1)
删除System.out.println
,这些会严重影响您的“效果”。
答案 1 :(得分:0)
使用inputWord.setText("");
替换s.clear();
后,查看是否有任何更改。
答案 2 :(得分:0)
您还可以通过仅转换为String一次来加快速度:
String inputString = s.toString();
然后使用inputString进行所有比较
您还可以在TextViews上缓存文本(即在活动中保留副本)以节省必须执行所有getText()调用。
答案 3 :(得分:0)
你刚刚被Observer effect抓住了。
正如Gabe Sechan所说,日志很慢,而且它们显示的时间可能不准确。
尝试在mid和mid之前使用SystemClock.uptimeMills()并在你真正需要之后减去并打印它们,但是时间差小于几毫秒根本就不准确。