// 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. UVa 11624,两次BFS

    题目链接:http://vjudge.net/contest/132239#problem/A 题目链接:https://uva.onlinejudge.org/external/116/11624. ...

  2. Poj(1220),hash

    题目链接:http://poj.org/problem?id=1200 这个题,我真是无限MLE,RE,WA,太伤心了,还是写一下吧.题意很简单(英语很好读),最后看了一下金海峰的思路.果然,应该是我 ...

  3. Javascript中setTimeout()的用法详解

    1.SetTimeOut()       1.1 SetTimeOut()语法例子       1.2 用SetTimeOut()执行Function       1.3 SetTimeout()语法 ...

  4. kindeditor编辑器

    一 简单使用方法 1. 把所有文件上传到程序所在目录下,例如:http://你的域名/editor/. 2. 在此目录下创建attached文件夹,并把权限改成777. 3. 要添加编辑器的地方加入以 ...

  5. 2016年12月16日 星期五 --出埃及记 Exodus 21:11

    2016年12月16日 星期五 --出埃及记 Exodus 21:11 If he does not provide her with these three things, she is to go ...

  6. 2016年11月12日 星期六 --出埃及记 Exodus 20:3

    2016年11月12日 星期六 --出埃及记 Exodus 20:3 "You shall have no other gods before me.除了我以外,你不可有别的 神.

  7. [转]Linq中GroupBy方法的使用总结

    Demo模型类: public class StudentScore { public int ID { set; get; } public string Name { set; get; } pu ...

  8. js与C++交互及C++解析json

    转载:http://zhidao.baidu.com/link?url=LLuWzwMmpfVcQeSGv1CrAfRXpnZaetm9xypqwMW6zxLhhKES-rITAsG0-Ku-bSMA ...

  9. Xcode插件管理以及Xcode7 升级

    一,Xcode插件管理工具 Alcatraz: mkdir -p ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins; cur ...

  10. 编写一个类A,该类创建的对象可以调用方法f输出小写的英文字母表。然 后再编写一个A类的子类B,要求子类B必须继承类A的方法f(不允许重写), 子类B创建的对象不仅可以调用方法f输出小写的英文字母表,而且可以调用子 类新增的方法g输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。

    package zimu; public class A { public void f() { for (int i = 97; i <123; i++) { System.out.print ...