android 万能回调接口
2015-08-19 17:36
441 查看
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">刚做android开发时经常遇到数据传递的问题,因为对Java也不是很熟悉,传递数据通过Intent或直接放到一个静态类中。</span>
后来才知道通过java接口回调来传输数据和做各种监听,后来看到Event Bus数据传输的框架受到了启发,自己弄了一个
简单的万能回调接口,自己感觉还不错。自己是个新手,欢迎各种菜鸟、小牛、大牛吐槽和指导!
1、先写个所以接口回调的都继承的BaseHandle
2、在写个管理所以接口回调的类
3、根据自己需要的传递的数据去创建回调接口并继承BaseHandle
5、发送数据
private void informUpdateDoctorList(String uid) {
ArrayList<BaseHandle> handleList = HandleRegister.getReceiver(BuyServiceHandle.BUYSERVICE_HANDLE_KEY);
if (handleList == null) {
return;
}
for (BaseHandle temp:handleList) {
((BuyServiceHandle)temp).buyResult(uid);
}
}
后来才知道通过java接口回调来传输数据和做各种监听,后来看到Event Bus数据传输的框架受到了启发,自己弄了一个
简单的万能回调接口,自己感觉还不错。自己是个新手,欢迎各种菜鸟、小牛、大牛吐槽和指导!
1、先写个所以接口回调的都继承的BaseHandle
public abstract interface BaseHandle { }
2、在写个管理所以接口回调的类
public class HandlerRegister { private static HashMap<String, ArrayList<BaseHandle>> receiverPond = new HashMap<String, ArrayList<BaseHandle>>(); /** * 注册新的handle * @param handleName */ public static void addType(String handleName) { try { ArrayList<BaseHandle> itemList = new ArrayList<BaseHandle>(); receiverPond.put(handleName, itemList); } catch (Exception e) { e.printStackTrace(); } } /** * 添加 handle * @param key * @param handle */ public static void setReceiver(String key,BaseHandle handle) { try { if (receiverPond.containsKey(key)) { receiverPond.get(key).add(handle); }else { addType(key); receiverPond.get(key).add(handle); } } catch (Exception e) { e.printStackTrace(); } } /** * 获取已经存在的handle * @param key * @return */ public static ArrayList<BaseHandle> getReceiver(String key) { return receiverPond.get(key); } /** * 删除单个handle * @param key * @param handle */ public static void deleteHandle(String key,BaseHandle handle) { try { if (!receiverPond.containsKey(key)) { return; } receiverPond.get(key).remove(handle); } catch (Exception e) { e.printStackTrace(); } } /** * 删除key下所有handle * @param key */ public static void deleteAllHandle(String key) { try { receiverPond.remove(key); } catch (Exception e) { e.printStackTrace(); } } }
3、根据自己需要的传递的数据去创建回调接口并继承BaseHandle
public interface BuyServiceHandle extends BaseHandle{ public static final String BUYSERVICE_HANDLE_KEY = "buyservice_handle"; public void buyResult(String uid); }4、注册回调接口,谁使用谁注册
BuyServiceHandle mBuyServiceHandle = new BuyServiceHandle() { @Override public void buyResult(final String uid) { updateDoctor(uid); } };
HandleRegister.setReceiver(BuyServiceHandle.BUYSERVICE_HANDLE_KEY, mBuyServiceHandle);
5、发送数据
private void informUpdateDoctorList(String uid) {
ArrayList<BaseHandle> handleList = HandleRegister.getReceiver(BuyServiceHandle.BUYSERVICE_HANDLE_KEY);
if (handleList == null) {
return;
}
for (BaseHandle temp:handleList) {
((BuyServiceHandle)temp).buyResult(uid);
}
}
相关文章推荐
- FLEX TitleWindow之间数据传输的示例
- asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输
- 用JSON做数据传输格式中的一些问题总结
- python网络编程之数据传输UDP实例分析
- 数据传输
- ASCII码的认知
- android httpclient封装,可以参考一下
- android 异步加载网络图片缓存机制
- 浅谈Java中的接口回调
- Android MediaPlayer生命周期详解
- Json格式
- flume跨机房数据传输
- 网卡
- 函数递归调用: 调用者 与 被调用者之间的四种数据传递关系
- Java学习疑惑(7)----网络编程, 详解TCP与UDP两者之间的共同点和差异
- TCP的Socket技术之服务器端
- web开发下的HTTP编程及接口回调的使用
- 安卓接口回调原理
- 简述上转型对象和接口回调