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

时间: 2024-10-13 22:21:59

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

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

尊重版权:http://cantellow.iteye.com/blog/838473 第一种(懒汉,线程不安全): Java代码   public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } retur

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

Java设计模式之单例模式(七种写法) 第一种,懒汉式,lazy初始化,线程不安全,多线程中无法工作: public class Singleton { private static Singleton instance; private Singleton (){}//私有化构造方法,防止类被实例化 public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } retu

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

首先在Springboot项目中,件一个java类,使用注解@Configuration  ,则这个类是SpringBoot bean的创建的配置文件类,,这种配置文件类有两种写法 1.使用包扫描 ,创建bean2. 使用函数创建bean 1.通过包扫描,将包下所有注解类,注入到spring容器中 import org.springframework.context.annotation.ComponentScan; import org.springframework.context.anno

java的for循环的几种写法

J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象.本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题. 在Java程序中,要"逐一处理"――或者说,"遍历"――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当然,用其它种类的循环也不是不可以,只是不知道是因为for这个词的长度比较短,还是因为for这个词

java中for循环的6种写法

废话不必多说,直接上代码: package stytle; import java.util.ArrayList;import java.util.Iterator;import java.util.List; /*** @author buru* @date 2009年11月29日15:04:04* */public class ForLoop { /*** just for test* * @param args*/public static void main(String[] args)

php写接口,对比两种写法

/**  *   * 添加订单 1年之前我写的  * @param String $sno  * @param String $name 订单名称  * @param int $uid  * @param String $realname  * @param String $shr  * @param String $address  * @param String $mobile  * @param String $num  * @param decimal $coupons  * @para

java HttpURLConnection 接口调用

/** * @param method 传输方式 为get或者post * @param urlString 基本url * @param parameters 参数map * @return * @throws IOException */ public String getToken(String method,String urlString,Map<String, String> parameters) throws IOException{ HttpURLConnection url

Android 按钮的响应点击事件的4种写法

Android按钮的响应点击事件 学习了按钮的响应点击事件,写一下总结,写的不好的希望大家能给出意见或建议. 这是layout xml文件   点击事件只需要获得Button的id或者onClick <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" an

java 接口调用

生产中遇到过这种问题,记录下java的接口调用问题. 一种是json方式: public static String sendPost(String url, JSONObject obj)throws IOException{ OutputStreamWriter out = null; BufferedReader reader = null; String response=""; /* String paramStr = ""; if (null != pa