アプリケーションにオートコンプリートがあります。文字の入力を開始すると、オートコンプリートには時間がなく、JSON ファイルの処理に多くの時間が必要です。私は addTextChangedListener を使用しているため、文字の入力がスムーズではありません。JSONでデータを検索する前にタイムアウトを設定したいです。
Object mObj[] = { dep, arr };
for (int mI = 0; mI < mObj.length; mI++) {
((AutoCompleteTextView) mObj[mI])
.addTextChangedListener(new TextWatcher() {
public void onTextChanged(final CharSequence s,
int start, int before, int count) {
setListViewAuto(s, mass);
}
public void beforeTextChanged(CharSequence s,
int start, int count, int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
}
UPD: 私はこれを行います:
final Object mObj[] = { dep, arr };
for (int mI = 0; mI < mObj.length; mI++) {
((AutoCompleteTextView) mObj[mI])
.addTextChangedListener(new TextWatcher() {
private Handler autoHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == MESSAGE_TEXT_CHANGED) {
String enteredText = (String) msg.obj;
setListViewAuto(enteredText);
}
}
};
public void onTextChanged(final CharSequence s,
int start, int before, int count) {
massListAuto = new ArrayList<String>(Arrays
.asList(mass));
String enteredText = s.toString();
autoHandler.removeMessages(MESSAGE_TEXT_CHANGED);
final Message msg = Message.obtain(autoHandler,
MESSAGE_TEXT_CHANGED, enteredText);
autoHandler.sendMessageDelayed(msg,
AUTOCOMPLETE_DELAY);
}
public void beforeTextChanged(CharSequence s,
int start, int count, int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
}
しかし、メッセージが表示されます: この Handler クラスは静的である必要があります。そうしないと、リークが発生する可能性があります