根据Editext内容实时网络请求的问题

来源:互联网 发布:淘宝佣金是卖家支付吗 编辑:程序博客网 时间:2024/05/21 09:38

    在APP开发中有可能需要实时的监听Editext的内容变化,进行关键字查找。但是频繁的网络请求不仅消耗用户流量还给服务器添加了不小的压力。发现携程是监听Editext在输入一段时间后在进行的网络请求,比如用户输入监听1s后没有输入,判断用户输入已经完成,在进行网络请求。

   1、监听Editext需要

   TextWatcher进行监听 2、代码
editText.addTextChangedListener(new TextWatcher() {    @Override    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {    }    @Override    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {    }    @Override    public void afterTextChanged(Editable editable) {        cur_time = System.currentTimeMillis();//获取输入结束的时间        if (handler != null) {  //清除上次的请求            handler.removeCallbacks(runnable);        }        handler.postDelayed(runnable, 1000);   //延时1s    }});
 private static Handler handler = new Handler(); private Runnable runnable = new Runnable() {    @Override    public void run() {        long time = System.currentTimeMillis();        Log.e("MainActivity",time-cur_time+"<------------------");  //误差是1毫秒        netWorkRequest();     } }; @Override protected void onDestroy() {    super.onDestroy();    handler.removeCallbacksAndMessages(null);    handler=null; }





原创粉丝点击