2013-04-07 19 views
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 
+1

取出日誌語句。日誌實際上很慢。 – 2013-04-07 06:25:25

+0

你指的是System.out.println的嗎?我很抱歉......這些是爲了追蹤哪些操作讓代碼變得遲緩。它介於2和3之間 – user1363410 2013-04-07 06:30:33

+0

您是否指的是System.out.println的?我很抱歉......由於LogCat具有高度精確的時間跟蹤功能,因此可以利用這些代碼來跟蹤哪部分代碼執行時間最長。所以我用這些println來標記相對滯後定位的時間戳。我總結出printlns「2」和「3」之間存在滯後。 – user1363410 2013-04-07 06:36:20

回答

0

看看是否有什麼變化與s.clear();更換inputWord.setText("");後。

1

刪除System.out.println,這些都嚴重影響了你的「表演」。

0

您也可以通過執行轉換爲字符串只有一次加快速度:

String inputString = s.toString(); 

然後使用inputString爲所有比較

您也可以緩存在TextViews文本(即保持複製到活動中)來保存必須執行的所有getText()調用。

0

你剛纔被逮住Observer effect

如前所述加布Sechan說,日誌是緩慢的,他們表示可能不準確也是時間。

嘗試前,中期使用SystemClock.uptimeMills()和減去後打印出來,如果你真的需要,但隨後幾毫秒的時間差少不會是準確的。