zoukankan      html  css  js  c++  java
  • java/Android 接口调用的几种写法

    虽然Handler用的地方比较普遍,但是接口也有他的独特之处,比较直观,然后降低了耦合性

    如有一接口,需要将数据传给使用的activity中,接口如下

    public interface PushValue {
            void push(byte v,byte v2);
        }

    1:判断context是否继承并通知调用接口

    if(context instanceof PushValue){
                    ((PushValue)context).push((byte)(crc16&0xff),(byte) ((0xff00 & crc16) >> 8));
                }

    这时只需要在数据传递处强制转换这个接口并调用,然后在使用处(比如Activity中 implements这个接口并实现其push方法即可)

     @Override
        public void push(byte v,byte v2) {
            tvCrcResult.setText("");
            tvCrcResult.setText(ConvertHexByteToString(v)+"  "+ConvertHexByteToString(v2));
        }

    2:setCallBack的方式

    1方法你会发现我们需要给数据源传context这个值,然而传了之后代码的耦合性就变强了,所以第二种方法解决了此麻烦

    private PushValue pushValue ;
    
    public void setPushValueCallBack(PushValue pushValueCallBack){
            this.pushValue = pushValueCallBack;
    }

    先声明接口在建立一个set方法,作用是将外部即将实例化的接口传进来,然后直接在数据源产生处调用 接口内方法即可

    pushValue.push((byte)(crc16&0xff),(byte) ((0xff00 & crc16) >> 8));

    外部实例了使用setPushValueCallBack这个方法的类之后,直接调用setPushValueCallBack方法即可

    new xxx类.setPushValueCallBack(new Crc16.PushValue() {
                @Override
                public void push(byte v, byte v2) {
                          //执行相关操作即可
                }
            });        

    这个是仿照Android绑定点击监听器写的,这个也是类似于监听器,数据源有数据传过来,使用的地方将会监听到变化然后执行相应操作

    接口和Handler有什么区别?

    调用Handler系统是会将你的Handler放在主线程中去执行的,然而我们调用的接口却还是在原本的线程中运行

  • 相关阅读:
    C#调用默认浏览器打开网页的几种方法
    关于百度排名点击器作弊提升百度排名的说明
    网站被百度降权的各种原因大解析
    百度搜索引擎排名原理、因素
    【ASP.NET开发】获取客户端IP地址 via C#
    防抖和节流
    vuex
    watch 和 computed
    JavaScript捕获与冒泡与委托
    XSS攻击
  • 原文地址:https://www.cnblogs.com/fengfenghuifei/p/6165361.html
Copyright © 2011-2022 走看看