博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java/Android 接口调用的几种写法
阅读量:6701 次
发布时间:2019-06-25

本文共 1320 字,大约阅读时间需要 4 分钟。

虽然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放在主线程中去执行的,然而我们调用的接口却还是在原本的线程中运行

 

转载于:https://www.cnblogs.com/fengfenghuifei/p/6165361.html

你可能感兴趣的文章
Oracle PL/SQL匿名块(三)
查看>>
模拟实现strstr
查看>>
解决Office系列安装不上的办法
查看>>
vimdiff的简单使用
查看>>
我的友情链接
查看>>
工作的习惯,看到好收藏下
查看>>
利用ACS来实现AAA服务
查看>>
国内开源镜像站
查看>>
vb.net中东软医保接口的调用
查看>>
java 消息摘要算法MD
查看>>
Web Service security UserNameToken 使用
查看>>
I/O重定向
查看>>
linux实例 批量修改图片文件名
查看>>
beta冲刺第三天
查看>>
工作中常用的但是又容易忽略的问题
查看>>
事件处理
查看>>
安卓自定义View进阶-分类与流程
查看>>
python cookbook 笔记三
查看>>
小程序 公众号/h5相互跳转-webview
查看>>
javascript学习(11)——[设计模式]工厂模式
查看>>