2016-05-11 7 views
0
optimieren

Hallo Leute Ich arbeite in einem Texteditor in Android und ich möchte meinen Texteditor optimieren. Als mein Texteditor hat eine 100 Zeilen Code wird es laggy Hier ist mein Implementierungscode:Wie kann ich meine Syntaxhervorhebung in Android

private void onEditorListener() { 
    edtEditor.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
     } 

     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
      _lastTypeTime = new Date(); 
     } 

     @Override 
     public void afterTextChanged(final Editable s) { 
      last_text_edit = System.currentTimeMillis(); 
      handler.postDelayed(runnable, idle_min); 
      runnable = new Runnable() { 
       @Override 
       public void run() { 
        try { 
         if (System.currentTimeMillis() >= (last_text_edit + idle_min - 500)) { 
          // user hasn't changed the EditText for longer than 
          // the min delay (with half second buffer window) 
          textHighLighter(s); // your queries 
          if (!already_queried) { // don't do this stuff twice. 
           already_queried = true; 
           //textHighLighter(s); // your queries 
          } 
         } 
         //already_queried = false; 
         handler.removeCallbacks(runnable); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }; 
     } 
    }); 
} 
+0

wie etwa Verzögerungszeit reduziert wird: '(last_text_edit + idle_min - 500)' – myoungjin

+1

verbesserte Code-Formatierung –

+0

@Anirudha Agashe jeden Vorschlag, wie ich Code-Formatierung kann verbessert –

Antwort

0

dies versuchen.

bei Feldvariable private boolean blocks = false; hinzufügen.

private void onEditorListener() { 
    edtEditor.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {} 

     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {} 

     @Override 
     public void afterTextChanged(final Editable s) { 
      if (blocks) { 
       return; 
      } 
      blocks = true; 
      textHighLighter(s); // your queries 
      blocks = false; 
     } 
}