Android使用TextWatcher匹配email造成ANR的解决

在编辑框输入邮箱时遇到快速输入导致的ANR问题,通过减少TextWatcher回调、在后台线程执行正则检查及优化正则表达式来修复。首先使用Handler限制回调频率,然后在后台线程执行耗时的邮箱验证,最后改进正则提高匹配效率,确保用户体验。
摘要由CSDN通过智能技术生成

背景

最近QA给我报了一个bug,说是在编辑框快速输入邮箱的时候有时会导致页面无响应。
这个编辑框是专门输入邮箱的,所以监听了TextWatcher,每次字符的改变都会用正则判断是否是正确的邮箱,如果不是的话会显示错误提示。这里我没有考虑到用户快速的填写内容,会触发多次的afterTextChanged回调这个case,这样就会因为正则匹配次数太多造成ANR。下面我谈谈自己是怎样修复这个bug的:

一、减少afterTextChanged回调

afterTextChanged方法里面通过handler延迟发送消息,在延迟时间之内的消息全部删除,代码如下:

 @Override
            public void afterTextChanged(Editable editable) {
                if (TextUtils.isEmpty(editable.toString())) {
                    return;
                }

                final Message msg = handler.obtainMe
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值