EditText延迟搜索

1.gif

使用Handler的延迟发送实现:

private static final int MESSAGE_SEARCH = 0x1;
private static long INTERVAL = 1000; // 输入变化时间间隔

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

// 设置监听
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会有一个内存泄漏的提示:

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • JAVA 8种基本类型 1.byte(位)8位2.short(短整数)16位3.int(整数)32位4.long(...
    小夫哥阅读 7,284评论 0 18
  • Android 内存管理的目的 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。简单粗...
    晨光光阅读 5,093评论 1 4
  • Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏...
    _痞子阅读 5,551评论 0 8
  • 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,...
    魏开心阅读 2,701评论 0 0
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 13,596评论 0 11

友情链接更多精彩内容