虽然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 import以及Java类的搜索路径

    如果你希望使用Java包中的类,就必须先使用import语句导入.import语句与C语言中的 #include 有些类似,语法为:    import package1[.package2-].cl ...

  2. VS2017 RC IIS Express 无法启动 环境不正确

    Unable to start program 'C:\Program Files (x86)\IIS Express\iisexpress.exe'. The environment is inco ...

  3. Java数据结构之回溯算法的递归应用迷宫的路径问题

    一.简介 回溯法的基本思想是:对一个包括有很多结点,每个结点有若干个搜索分支的问题,把原问题分解为对若干个子问题求解的算法.当搜索到某个结点.发现无法再继续搜索下去时,就让搜索过程回溯(即退回)到该结 ...

  4. Java数据结构之字符串模式匹配算法---Brute-Force算法

    模式匹配 在字符串匹配问题中,我们期待察看源串 " S串 " 中是否含有目标串 " 串T " (也叫模式串).其中 串S被称为主串,串T被称为子串. 1.如果在 ...

  5. Android存储

    Android的四种数据存储方式: 1.SharedPrefrences 2.SQLite 3.Content Provider 4.File SharedPrefrences: 1.是一种轻型的数据 ...

  6. 用CSS制作伪标签云

    performance testing stress testing conformance testing acceptane testing smoke testing regression te ...

  7. 7.dotnet core 如何发邮件

    需要用到的Nuget包 "MailKit": "1.8.1", 方法 /// <summary> /// 发送邮件(支持Html发送,支持添加一个附 ...

  8. Mapreduce体系架构

    Mapreduce也采用master和slave的架构设计.Jobtracker负责作业的初始化和分配 与任务节点进行通信,协调整个作业的执行. 一个job分为两种task(map/reduce),包 ...

  9. 工作上遇到的问题 DEBUG 001

    java文件断点跳到对应的class文件解决方式 我也是第一次遇到这个问题,找了很久解决办法.后面找开发组老大才解决. 问题描述: 调试程序,在ExportAction.java文件打断点.debug ...

  10. centos 带S权限的二进制

    早上写的一个用find查找带S权限的,感觉不记一下可惜了. [root@iZ28wg1kditZ ~]# find / -type f -exec ls -al {} \;|awk 'BEGIN {p ...