私はときのEditTextでユーザーが検索を実行するには、次のコードを使用します。ユーザーが入力中にEditTextで複数のトリガーを避けるには?
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) {
}
});
ユーザーが単語を入力しているときは、この複数回トリガします。つまり、ユーザーが "hello"と入力すると、このコードは値( "h"、 "he"、 "hell"、 "hell"、 "hello")を5回トリガーします。通常、これは問題ありませんが、トリガされた検索は高価で、中間検索でリソースを無駄にしたくない場合は大したことはありません。私が望むのは、ユーザーが入力を開始した後に特定のしきい値のみをトリガーするリスナーか、またはtriggerSearch
を呼び出す前にリスナーで待機し、その待機の前に別のイベントがトリガーされた場合に、それ自体をキャンセルするものです。
このHandlerクラスは静的であるか、リークが発生する可能性があります。 – Choletski
@Choletskiリークがどのように起こるかを詳しく教えてください。 – jitenagarwal19
@ jitenagarwal19静的ハンドラは、囲むクラスへの参照を保持しません – andrei