0

该程序需要尽可能少的滞后。不幸的是,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
4

4 回答 4

1

删除System.out.println,这些都严重影响了你的“表现”。

于 2013-04-07T07:12:35.303 回答
0

你刚刚被观察者效应所吸引。

正如 Gabe Sechan 已经说过的,日志很慢,而且它们显示的时间也可能不准确。

尝试在中间之前和中间使用 SystemClock.uptimeMills() 并在您确实需要时减去并打印它们,但是少于几毫秒的时间差根本不准确。

于 2013-04-07T07:58:09.220 回答
0

您还可以通过只转换一次 String 来加快速度:

 String inputString = s.toString();

然后使用 inputString 进行所有比较

您还可以在 TextViews 上缓存文本(即在活动中保留一个副本),以节省必须执行所有 getText() 调用。

于 2013-04-07T07:20:23.017 回答
0

inputWord.setText("");用替换后看看是否有任何变化s.clear();

于 2013-04-07T07:00:55.250 回答