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

java/Android 接口调用的几种写法的更多相关文章

  1. Java设计模式之单例模式(七种写法)

    Java设计模式之单例模式(七种写法) 第一种,懒汉式,lazy初始化,线程不安全,多线程中无法工作: public class Singleton { private static Singleto ...

  2. java中for循环的6种写法

    有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考.   package ForLoop; import java.util.ArrayList; import java.util.Itera ...

  3. java设计模式之单例模式(几种写法及比较)

    概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...

  4. 【JAVA学习】单例模式的七种写法

    尊重版权:http://cantellow.iteye.com/blog/838473 第一种(懒汉.线程不安全): Java代码   public class Singleton { private ...

  5. Android按钮事件的4种写法

    经过前两篇blog的铺垫,我们今天热身一下,做个简单的例子. 目录结构还是引用上篇blog的截图. 具体实现代码: public class MainActivity extends Activity ...

  6. SpringBoot java配置类@Configuration 的两种写法

    首先在Springboot项目中,件一个java类,使用注解@Configuration  ,则这个类是SpringBoot bean的创建的配置文件类,,这种配置文件类有两种写法 1.使用包扫描 , ...

  7. java SWing事件调用的两种机制

      Java(91)  /** * java swing中事件调用的两种机制: * (一)响应机制 * (二)回调机制 */ package test; import java.awt.*; impo ...

  8. [Android]Java中点击事件的四种写法

    点击事件的必备条件:实现OnClickListener接口,重写onclick(View v)方法 以拨号简单案例为例,如下图效果: 逻辑流程: 获取点击对象,获取数据 给对象设置监听类 实现OnCl ...

  9. JAVA客户端API调用memcached两种方式

    1. memcached client for java客户端API:memcached client for java 引入jar包:java-memcached-2.6.2.jar package ...

随机推荐

  1. 归并排序算法 java 实现

    归并排序算法 java 实现 可视化对比十多种排序算法(C#版) [直观学习排序算法] 视觉直观感受若干常用排序算法 算法概念 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Di ...

  2. Scala基础语法

    /* 学慕课网上<Scala程序设计>课程跟着敲的代码 作为代码参考也是很好的 在scala_ide.org上下载eclipse IDE,新建一个worksheet,就可以像在xcode的 ...

  3. Qt qml listview 列表视图控件(下拉刷新、上拉分页、滚动轴)

    Qt qml listview下拉刷新和上拉分页主要根据contentY来判断.但要加上顶部下拉指示器.滚动条,并封装成可简单调用的组件,着实花了我不少精力:) [先看效果]    [功能] 下拉刷新 ...

  4. 使用django rest framework

    django 刚接触,想做一些restful api , google了一下,发现有现成的框架.Django REST framework. 对使用做下记录: 安装 从http://django-re ...

  5. rc.local 增加自启动

    编辑 /etc/rc.d/rc.local,将要执行的命令放里面. 然后给 rc.local 增加执行权限  chmod +x rc.local . 不过该方法正在被逐步淘汰,提示建议采用自定义服务的 ...

  6. u-boot移植 II

    下面是韦老师的uboot移植攻略: A. 开发板的相关拷贝与修改 1. 在board文件夹下面, 将原来的smdk2410复制为100ask24x0目录, 并将smdk2410.c改名为100ask2 ...

  7. Centos7下Etcd集群搭建

    一.简介 "A highly-available key value store for shared configuration and service discovery." ...

  8. MySQL存储过程中实现回滚

    用存储过程处理复杂的业务时,可能涉及到对多张表格的操作,在任一个步骤出了问题,就需要对前面的操作回滚.举例实现: DROP PROCEDURE IF EXISTS pro_test; CREATE P ...

  9. activity的四种加载模式

    在android里,有4种activity的启动模式,分别为: standard, singleTop, singleTask和singleInstance, 其中standard和singleTop ...

  10. javascript高级程序设计第5章,引用类型

    object类型: 创建object实列的方式有两种,一种是new()方法,一种是对象字面量表示法: 第一种法方:  var obj = new object(); obj.name = 'name' ...