您的位置:首页 > 其它

事件回调 和通知方式的总结(EventBus框架的使用)

2017-09-30 15:46 495 查看

基本介绍 和使用方式:

http://www.jianshu.com/p/a040955194fc
https://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.发送广播

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐