EditText延遲搜索

1.gif

使用Handler的延遲發(fā)送實(shí)現(xiàn):

private static final int MESSAGE_SEARCH = 0x1;
private static long INTERVAL = 1000; // 輸入變化時(shí)間間隔

Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == MESSAGE_SEARCH){
                mTextView.setText("搜索key:" + mEditText.getText().toString());
            }
        }
};

// 設(shè)置監(jiān)聽
mEditText.addTextChangedListener(new TextWatcher() {

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {}

    @Override
    public void afterTextChanged(Editable s) {
        if (mHandler.hasMessages(MESSAGE_SEARCH)) {
            mHandler.removeMessages(MESSAGE_SEARCH);
        }
            mHandler.sendEmptyMessageDelayed(MESSAGE_SEARCH, INTERVAL);
        }
    });

一般使用Handler會(huì)有一個(gè)內(nèi)存泄漏的提示:

Paste_Image.png

可以使用WeakReference弱引用來避免:

    MyHandler mHandler = new MyHandler(this);

    private static class MyHandler extends Handler {
        WeakReference<SearchEditActivity> mActivityReference;

        MyHandler(SearchEditActivity activity) {
            mActivityReference= new WeakReference<SearchEditActivity>(activity);
        }

        @Override
        public void handleMessage(Message msg) {
            SearchEditActivity activity = mActivityReference.get();
            if (activity != null) {
                activity.handleMessage(msg);
            }
        }
    }

    private void handleMessage(Message message){
        if (message.what == MESSAGE_SEARCH){
            mTextView.setText("搜索key:" + mEditText.getText().toString());
        }
    }
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JAVA 8種基本類型 1.byte(位)8位2.short(短整數(shù))16位3.int(整數(shù))32位4.long(...
    小夫哥閱讀 2,623評(píng)論 0 18
  • Android 內(nèi)存管理的目的 內(nèi)存管理的目的就是讓我們?cè)陂_發(fā)中怎么有效的避免我們的應(yīng)用出現(xiàn)內(nèi)存泄漏的問題。簡單粗...
    晨光光閱讀 1,369評(píng)論 1 4
  • Android 內(nèi)存泄漏總結(jié) 內(nèi)存管理的目的就是讓我們?cè)陂_發(fā)中怎么有效的避免我們的應(yīng)用出現(xiàn)內(nèi)存泄漏的問題。內(nèi)存泄漏...
    _痞子閱讀 1,695評(píng)論 0 8
  • 內(nèi)存管理的目的就是讓我們?cè)陂_發(fā)中怎么有效的避免我們的應(yīng)用出現(xiàn)內(nèi)存泄漏的問題。內(nèi)存泄漏大家都不陌生了,簡單粗俗的講,...
    魏開心閱讀 369評(píng)論 0 0
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    余生動(dòng)聽閱讀 10,798評(píng)論 0 11

友情鏈接更多精彩內(nèi)容