• 监听EditText输入完成


    最近有个需求,要在用户输入完快递单号之后,请求快递100接口,拿到快递公司信息。总不能用户输入一个数字就请求一次吧,给服务器造成不必要的压力(虽然不是自家服务器)。但是又无法知晓用户何时输入完毕,每家快递公司单号的长度都不一。

    So,在用户500ms(时长可以自己定)没有输入内容时请求接口。

     1         et_express_code.addTextChangedListener(new TextWatcher() {
     2             @Override
     3             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
     4 
     5             }
     6 
     7             @Override
     8             public void onTextChanged(CharSequence s, int start, int before, int count) {
     9 
    10             }
    11 
    12             @Override
    13             public void afterTextChanged(Editable s) {
    14                 if(delayRun!=null){
    15                     //每次editText有变化的时候,则移除上次发出的延迟线程
    16                     handler.removeCallbacks(delayRun);
    17                 }
    18                 editExpressNum = s.toString();
    19                 //延迟500ms,如果不再输入字符,则执行该线程的run方法
    20                 handler.postDelayed(delayRun, 500);
    21             }
    22         });
     1     /**
     2      * 延迟线程,看是否还有下一个字符输入
     3      */
     4     private Runnable delayRun = new Runnable() {
     5 
     6         @Override
     7         public void run() {
     8             if (!NullUtil.isListEmpty(expressList)) {
     9                 //请求服务器接口
    10             }
    11         }
    12     };

    主要是以上两点:

    1、延迟500ms执行请求接口的任务;

    2、用户输入内容时,此任务若存在则移除当前MessageQueue里待执行的线程。

      BY LiYing

  • 相关阅读:
    应用系统之间传输数据的几种方式
    解决
    springmvc httprequest 使用@Autowired注解
    JVM client模式和Server模式的区别
    延时接通电路
    C语言中getch()、getche()和getchar()
    结构体
    五:分布式事务一致性协议paxos的应用场景
    四:分布式事务一致性协议paxos通俗理解
    三:分布式事务一致性协议2pc和3pc
  • 原文地址:https://www.cnblogs.com/widgetbox/p/8409529.html
Copyright © 2020-2023  润新知