// activity 之间方法调用的桥梁

public class ActivityCallBridge {

static ActivityCallBridge mBridge;

private OnMethodCallback mCallback;

private ActivityCallBridge() {

}

public static ActivityCallBridge getInstance() {

if (mBridge == null) {

mBridge = new ActivityCallBridge();

}

return mBridge;

}

public void invokeMethod() {

if (mCallback != null) {

mCallback.doMethod();

}

}

public void setOnMethodCallback(OnMethodCallback callback) {

mCallback = callback;

}

public static interface OnMethodCallback {

public void doMethod();

}

}

 

如果你要 B 去调用 A 的一个方法, 你可以让 A 实现 OnMethodCallback 接口,然后在 B 里面调用 invokeMethod 方法来完成回调:

// A 实现调用接口

public class AActivity extends Activity implements ActivityCallBridge.OnMethodCallback {

private ActivityCallBridge mBridge;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mBridge = ActivityCallBridge.getInstance();

mBridge.setOnMethodCallback(this);

}

@Override

public void doMethod() {

}

}

 

//B 调用接口

public class BActivity extends Activity {

private ActivityCallBridge mBridge;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mBridge = ActivityCallBridge.getInstance();

mBridge.invokeMethod();

}

}

方式一结束

——————————————————————————————————————————————————————————————————————————————————————————

                               回调方式二:

复制内容到剪贴板

代码:

package pattern;

/**
*
@author xuzhiwei
*/
public interface ICallBack {
    public void onSuccess(String content);
    public void onFailure(String errorMsg);
}

复制内容到剪贴板

代码:

package pattern;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
@author xuzhiwei
*/
public abstract class Request { 
    public void onSuccess(String resposeBody){}
    public void onFailure(String exceptionMsg){}
    
    public Request(){}
    
    public void execute(String path){
        try {
            URL url = new URL(path);
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            
            conn.setConnectTimeout(3*1000);
            conn.setReadTimeout(2000);
            int responseCode =  conn.getResponseCode();
            onResponse(responseCode);
        } catch (MalformedURLException ex) {
            onFailure(ex.getMessage()); 
        } catch (IOException ex) {
           onFailure(ex.getMessage()); 
        } 
    }
    
    public void onResponse(int code){ 
        if(code == 200){
            onSuccess("发送请求成功!");
        }else{
            onFailure("发送请求失败!请求代码:"+code);
        }
    }
     
}

复制内容到剪贴板

代码:

package pattern;

/**
*
@author xuzhiwei
*/
public class Ranking {
    private  String path;
    
    public Ranking(String path){
        this.path = path;
    } 
    
    public  void list(final ICallBack call) { 
        
        Request request = new Request() {
            @Override
            public void onSuccess(String resposeBody) {
                if (null != call) {
                    call.onSuccess(resposeBody);
                } else {
                    onFailure("未初始化回调函数");
                }
            }

@Override
            public void onFailure(String exceptionMsg) {
                if (null != call) {
                    call.onFailure(exceptionMsg);
                }
            }
        };

request.execute(path);
    }
}

复制内容到剪贴板

代码:

package pattern; 
/**
*
@author xuzhiwei
*/
public class TestCallBack {

public static void main(String[] args) {
        
        Ranking ranking = new Ranking("http://localhost/net/index.php");
        
        ranking.list(new ICallBack() {

@Override
            public void onSuccess(String content) {
               complete(content);
            }

@Override
            public void onFailure(String errorMsg) {
                complete(errorMsg);
            }
        });
    }
    
    private static void complete(String msg)
    {
        System.out.println("------请求完成---->"+msg);
    }
}

android 回调函数的使用的更多相关文章

  1. android 回调函数二:应用实例

    前言:如果对android回调的概念不明白的请看:android 回调函数一:基本概念 1.定义接口 package com.app.util; public interface ZYJCallBac ...

  2. android 回调函数一:基本概念

    1.概念 客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数. 一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C ...

  3. android回调函数

    在我们进行android开发的时候,常常遇到一些回调函数,当中,我们最常常使用的回调就是,当我们对一个组件设置监听的时候,事实上就相对于设置的回调函数.比如: Button btn = (Button ...

  4. Android 回调函数的理解,实用简单(回调函数其实是为传递数据)

    作者: 夏至,欢饮转载,也请保留这段申明 http://blog.csdn.net/u011418943/article/details/60139910 一般我们在不同的应用传递数据,比较方便的是用 ...

  5. android 回调函数使用简介

    //1---定义回调函数 public interface GirdMenuStateListener { void onSuccess(); void onError(); } //2---使用的地 ...

  6. android 回调函数

    http://blog.csdn.net/xiaanming/article/details/8703708 此为回调的java 实例 http://www.cnblogs.com/qingchen1 ...

  7. 十四、Android学习笔记_Android回调函数触发的几种方式 广播 静态对象

    一.通过广播方式: 1.比如登录.假如下面这个方法是外界调用的,那么怎样在LoginActivity里面执行登录操作,成功之后在回调listener接口呢?如果是平常的类,可以通过构造函数将监听类对象 ...

  8. android之回调函数的意义

    本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273) 看完这篇文后大家可以看看这个http://blog. ...

  9. JAVA回调函数ANDROID中典型的回调地方

    在计算机中回调函数是指通过函数参数传递到其他代码类的,某一块可执行代码的引用,这以设计允许了底层代码调用者在高层定义的子程序. 在JAVA里面我们使用接口的方式来实现函数的回调. 回调的通俗就是:程序 ...

随机推荐

  1. java多线程解决生产者消费者问题

    import java.util.ArrayList; import java.util.List; /** * Created by ccc on 16-4-27. */ public class ...

  2. css写法优化

    写css关于id,class等的命名,文件的结构,共同模块的提取,代码的复用性,可读性,扩展性,维护性都要考虑,不然后期可以会需要花大力气去进行维护修改.考虑写出足够科学的css,需要考虑下面几个方面 ...

  3. MultiSelectComboBox(二)

    1. MainWindow.xaml <Window x:Class="MultiSelectDemo.MainWindow"         xmlns="htt ...

  4. Unity-Animator深入系列---目标匹配Target Matching

    回到 Animator深入系列总目录 一开始会理所当然的觉得,匹配是这样的: 但结果却是这样的(右边的Cube是匹配目标): 感觉这个接口应该是专门为攀爬之类的动画准备的,属于被动匹配位置,移动整个对 ...

  5. 2007 Asia - Nanjing F题,字典树

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=2 ...

  6. java提高篇---HashTable

    在java中与有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然后通过get(key)方法获取相 ...

  7. ListableBeanFactory

    ListableBeanFactory public interface ListableBeanFactory extends BeanFactory 该接口中定义了可以获取配置中所有bean的信息 ...

  8. HTTP传送协议

    HTTP传送协议--学习笔记 HTTP数据传输格式 基本格式为: 请求或应答行 请求或应答头部 空行 数据 POST传送格式 底层数据通信: 客户端请求: POST /response.php HTT ...

  9. Oracle中创建用户和授权

    默认的:最高权限用户:SYSTEM 密码:MANAGER 管理员权限用户:SYS 密码:CHANGE_ON_INSTALL 普通用户:SCOTT 密码:TIGER 登 陆管理员或超级管理员用户可以自己 ...

  10. C++函数前和函数后加const修饰符区别

    class Test(){ public: Test(){} const int foo(int a); const int foo(int a) const; }; 一.概念 当const在函数名前 ...