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里面我们使用接口的方式来实现函数的回调. 回调的通俗就是:程序 ...
随机推荐
- Oracle字符集设置
客户端与服务端字符集不一致会造成乱码问题. 在服务端: sql>SELECT * FROM NLS_DATABASE_PARAMETERS; 在查询结果中关注如下参数: nls_language ...
- SDUT 2409:The Best Seat in ACM Contest
The Best Seat in ACM Contest Time Limit: 1000MS Memory limit: 65536K 题目描述 Cainiao is a university st ...
- 第十二届浙江省大学生程序设计大赛-Beauty of Array 分类: 比赛 2015-06-26 14:27 12人阅读 评论(0) 收藏
Beauty of Array Time Limit: 2 Seconds Memory Limit: 65536 KB Edward has an array A with N integers. ...
- 修改datagridview中其中一列的值
控件.rows[0].cells['名'].value = 值
- FTP操作类
using System; using System.Collections.Generic; using System.Net; using System.IO; namespace HGFTP { ...
- jar 文件
使用类库中的类: 1.当前应用程序所在目录中没有包名的类,直接用. 2.java库. import语句导入. 3.当前目录的子孙目录有报名的类,set classpath,之前有写. 4.扩展ext文 ...
- Java 关键字final
在程序设计中,我们有时可能希望某些数据是不能够改变的,这个时候final就有用武之地了.final是java的关键字,它所表示的是"这部分是无法修改的".不想被改变的原因有两个:效 ...
- PKCS10生成证书csr
public static String genCSR(String subject, String alg,String provider) throws InvalidKeyException, ...
- android 入门 001 (界面布局)
学android 首先学会怎么布局界面,我开始是学.net的,因工作需要学习一下安卓,外行写的不好,请多多见谅指教 .这一篇文章然我们来学习一下四种布局吧! RelativeLayout(相对布局) ...
- Xcode_5
Xcode_5 Objective-C进行IOS7编程 我个人的经验是,如果之前有过编程基础(无论是C.C++还是Java),那么<Objective-C基础教程>(图灵程序设计丛书 ...