我正在使用此应用程序,用户可以在其中输入autoCompleteTextView中的位置,并且它将根据here所述基于Google Places Api建议位置。

但是我想通过仅在用户停止键入一定时间后才发送请求来限制应用程序发送的请求量。有谁知道如何做到这一点?

最佳答案

this answer类似,但更为简洁,并且没有引入额外的状态。您也不需要阈值检查,因为仅在实际需要过滤时才调用performFiltering

子类化AutoCompleteTextView似乎是唯一的方法,因为您无法覆盖/替换TextWatcher添加的AutoCompleteTextView

public class DelayAutoCompleteTextView extends AutoCompleteTextView {
    public DelayAutoCompleteTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    private final Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            DelayAutoCompleteTextView.super.performFiltering((CharSequence) msg.obj, msg.arg1);
        }
    };

    @Override
    protected void performFiltering(CharSequence text, int keyCode) {
        mHandler.removeMessages(0);
        mHandler.sendMessageDelayed(mHandler.obtainMessage(0, keyCode, 0, text), 750);
    }
}

09-12 23:54