android 回调函数的使用
// 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 回调函数的使用的更多相关文章
- android 回调函数二:应用实例
前言:如果对android回调的概念不明白的请看:android 回调函数一:基本概念 1.定义接口 package com.app.util; public interface ZYJCallBac ...
- android 回调函数一:基本概念
1.概念 客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数. 一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C ...
- android回调函数
在我们进行android开发的时候,常常遇到一些回调函数,当中,我们最常常使用的回调就是,当我们对一个组件设置监听的时候,事实上就相对于设置的回调函数.比如: Button btn = (Button ...
- Android 回调函数的理解,实用简单(回调函数其实是为传递数据)
作者: 夏至,欢饮转载,也请保留这段申明 http://blog.csdn.net/u011418943/article/details/60139910 一般我们在不同的应用传递数据,比较方便的是用 ...
- android 回调函数使用简介
//1---定义回调函数 public interface GirdMenuStateListener { void onSuccess(); void onError(); } //2---使用的地 ...
- android 回调函数
http://blog.csdn.net/xiaanming/article/details/8703708 此为回调的java 实例 http://www.cnblogs.com/qingchen1 ...
- 十四、Android学习笔记_Android回调函数触发的几种方式 广播 静态对象
一.通过广播方式: 1.比如登录.假如下面这个方法是外界调用的,那么怎样在LoginActivity里面执行登录操作,成功之后在回调listener接口呢?如果是平常的类,可以通过构造函数将监听类对象 ...
- android之回调函数的意义
本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273) 看完这篇文后大家可以看看这个http://blog. ...
- JAVA回调函数ANDROID中典型的回调地方
在计算机中回调函数是指通过函数参数传递到其他代码类的,某一块可执行代码的引用,这以设计允许了底层代码调用者在高层定义的子程序. 在JAVA里面我们使用接口的方式来实现函数的回调. 回调的通俗就是:程序 ...
随机推荐
- 在chrome浏览器和在IE浏览器中显示的页面样式不一样的解决办法
在IE浏览器中添加 一行代码即可:<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 位 ...
- ACM题目————士兵杀敌(三)
[RMQ算法]:用于当数组过于庞大的时候,查询区间的最大(最小)值. 时间复杂度:O(nlogn),主要时间发费在预处理上,查询只要O(1). 描述 南将军统率着N个士兵,士兵分别编号为1~N,南将军 ...
- android中文件操作的四种枚举
1.MODE_PRIVATE:默认操作模式,代表该文件是私有数据,只能被应用自身访问,在该模式下,写入的的内容会覆盖原文件中的内容. 2.MODE_APPEND:该模式会检查文件是否存在,存在就往文件 ...
- Resolving failed: Temporary failure in name resolution 错误解决方法
首先,检查自己的服务器是否配置了DNS: 其次,在确认了自己已经配置了DNS后,并且域名解析已经正常的情况下,还有上面的问题,接下来就是重启自己的web服务器.比如,apache,nginx等. ...
- combobox中动态加入几个checkbox,实现下拉框多选
combobox中动态加入几个checkbox,实现下拉框多选,将一个checkbox选中时其内容就会在combobox中显示出来,将另一个checkbox选中时其内容会跟在第一个checkbox的内 ...
- js去除日期字符串时分秒
var date = "2015-11-11 00:00:00"; var newDate=/\d{4}-\d{1,2}-\d{1,2}/g.exec(date) newDate= ...
- Boring count(字符串处理)
Boring count Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 0. WP8.1学习笔记
应用程序生命周期: 运行: 在程序NotRunning状态下点击图标,应用将处于Running状态,这会触发一个Actived事件 挂起: 在程序Running状态下, 点击返回键或win键会触发一个 ...
- EasyUI 格式化DataGrid列
easyui DataGrid中格式化列,如果单价低于20,则使用定义列formatter为红色文本.格式化DataGrid列,我们应该设置formatter属性,这个属性是一个函数.格式化函数包括两 ...
- 使用 JavaScript
我们要用 JavaScript,但是把它写在哪里呢? 这里 ↘ 1. HTML 页面中 . 2. 单独的一个文件中,文件后缀名是“.js”. ——————————————————— ...