Jak uniknąć wielu wyzwalaczy w EditText podczas pisania przez użytkownika?

Używam następującego kodu do wyszukiwania, gdy użytkownik wpisuje tekst w EditText:

<code>EditText queryView = (EditText) findViewById(R.id.querybox);
queryView.addTextChangedListener(new TextWatcher() {
  @Override
  public void afterTextChanged(Editable s) {
    triggerSearch(s.toString()); 
  }
  @Override
  public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  }
  @Override
  public void onTextChanged(CharSequence s, int start, int before, int count) {
  }
});
</code>

Jednak uruchamia to wiele razy, gdy użytkownik wpisuje słowo. To znaczy, jeśli użytkownik wpisuje „hello”, ten kod wywoła 5 razy wartości („h”, „he”, „hel”, „hell”, „hello”). Zwykle byłoby to w porządku, ale uruchamiane wyszukiwanie jest kosztowne i nie chcę marnować zasobów na wyszukiwania pośrednie, które nie mają wielkiego zastosowania. To, czego chcę, to albo słuchacz, który wyzwala tylko pewien próg po tym, jak użytkownik zacznie pisać, albo jakiś framework, który czeka w słuchaczu przed wywołaniemtriggerSearchi jeśli inne zdarzenie zostanie uruchomione przed tym oczekiwaniem, anuluje się.

questionAnswers(4)

yourAnswerToTheQuestion