事件回调 和通知方式的总结(EventBus框架的使用)
来源:互联网 发布:linux编写c语言 编辑:程序博客网 时间:2024/06/05 10:01
基本介绍 和使用方式:
http://www.jianshu.com/p/a040955194fchttps://juejin.im/entry/570ae5668ac247004c3128a4
使用的情景:
通常在user 退出或者登陆时 通知各个界面进行刷新。 或者当数据完成后通知
因为是根据传入的对象进行回调的,所以可以选择 String 类型 判断字符串的标记值 进行针对性的刷新界面!
传统事件通知方式:
1.Activity 和子 fragment间(adapter 和 Acitivity间 等等)可以通过 定义回调函数的方式进行交互
1.自定义回调 在 A类中 定义 接口 和接口方法,并在需要进行回调的地方 使用该方法
public class A_Fragment extends BaseFragment { private onSwitchpaperListener onSwitchpaperListener; //定义接口和接口方法 public interface onSwitchpaperListener{ void switchpaper(int i); } //对外提供一个设置监听的方法。 public void setOnSwichtpaerListener(onSwitchpaperListener listener){ this.onSwitchpaperListener=listener; } @Override public void intiEvent() { if(onSwitchpaperListener!=null){ onSwitchpaperListener.switchpaper(position); }else { } }}
在B fragment中 实现具体的操作逻辑,并传入A 中所需要的参数:
mainActivity.getAFragment().setOnSwichtpaerListener(new Slidingleft_Fragment.onSwitchpaperListener() { @Override public void switchpaper(int i) { BaseCenterPaper currentPaper= baseCenterPaperList.get(i); tv_title.setText(lists.get(i).getTitle()); //先移除 fl.removeAllViews(); currentPaper.initData(); fl.addView(currentPaper.getRoot()); } });
2.Activity StartActivityForResult之间的回调通知 。
主要是两个参数 resultcode requedecode
请求码用来判断是从那个Activity 发出的 resultcode 用来判断 是从哪个Acitivity返回的
这样 在 onActivityResult 方法中就能准却判断
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == Contants.REQUEST_CODE && resultCode == this.RESULT_OK) { Log.d("登录后mainActivity执行回调","ture"); new Thread() { public void run() { //这儿是耗时操作,完成之后更新UI; runOnUiThread(new Runnable(){ @Override public void run() { //通知子view g if (user != null) { //更新mine refrushMineView(); //更新购物车 refrushShopCarView(); } else { } } }); } }.start(); } if (requestCode == 2 && resultCode == 2) { Log.d("购物车执行回调","ture"); new Thread() { public void run() { //这儿是耗时操作,完成之后更新UI; runOnUiThread(new Runnable(){ @Override public void run() { //通知子view g if(user!=null) { refrushShopCarView(); } else { } } }); } }.start(); } if (user != null) { //跳转至目标Activity if (MyApplication.getInstance(this).getIntent() == null) { } else { MyApplication.getInstance(this).jumpToTargetActivity(this); } } else { } }
注意事项!
onBack()回退方法! 要在super.onBack 之前 setResult 不然会无效, 所得值一直是0
3.handler方式不赘述
4.发送广播
阅读全文
0 0
- 事件回调 和通知方式的总结(EventBus框架的使用)
- EventBus事件总线框架的使用
- EventBus的使用方式
- EventBus框架的使用
- 使用事件总线框架EventBus和Otto
- 使用事件总线框架EventBus和Otto
- 使用事件总线框架EventBus和Otto
- EventBus的使用总结
- 事件总线分发库EventBus框架的简单使用
- 事件总线-EVENTBUS的使用
- EventBus事件总线的使用
- EventBus事件总线的使用
- EventBus框架的简单使用
- Android EventBus框架的使用
- 浅谈EventBus框架的使用
- 打造超越 EventBus 的事件管理框架
- eventbus轻量级的事件发送框架
- Android事件总线分发库的使用EventBus(和Otto一样,只是效率高点)
- maven--pom.xml
- hdu 6165 FFF at Valentine(强连通分量缩点+拓扑排序)
- 开发单点登录系统(SSO)时需要注意的几个问题
- 裸机实验体验之usb启动配合dnw工具下载
- ZOJ-3732 Graph Reconstruction(判定无向图度数序列能否可图化)
- 事件回调 和通知方式的总结(EventBus框架的使用)
- OnClose()和 OnDestroy()
- 【安全牛学习笔记】WEBSHELL
- OpenCV-将图像转化为灰度图,然后边缘检测
- c++ inline variable 内联变量 c++17
- linux 网络编程:使用两线程实现socket同时收发数据
- 重新理解单例模式
- 胸腔阻抗成像中的常用术语
- 迅为Exynos4412开发板例程及注释——注册字符类设备