通过broadcastReceiver刷新页面

在做项目时经常遇到一个页面上个列表,然后会对列表数据进行添加,删除,编辑等操作,

之前图方便就在onResume方法中增加一个刷新数据方法,但是体验很差,没有刷新数据也会调用刷新,也会增加流量开销


为了做到只有在改变数据的时候才刷新。有以下两种常用方法

1,使用startactivityforResult方法。通过回掉刷新,但是通常不能满足全部情况。

2,使用BroadcastReceiver。这里主要讲述此方法。

在需要刷新的界面activity中增加广播接收器oncreate中registerReceiver,在ondesdroy中unregisterReceiver

private MyBroadCast mMyBroadCast ;
public static final String ACTION_XXXX= "action_xxx_xxx";


public void registerMyReceiver() {
mMyBroadCast = new MyBroadCast ();
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(ACTION_XXXX);
registerReceiver(mMyBroadCast , filter);
}

public class MyBroadCast extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
if (ACTION_XXXX.equals(intent.getAction())) {
boolean isDelete= intent.getBooleanExtra(
"intent_delete", false);

boolean isAdd = intent.getBooleanExtra(
"intent_add", false);

boolean isUpdate = intent.getBooleanExtra(
"intent_update", false);

                                //根据类型进行相关数据处理


}
}
}


在添加数据成功时发送广播

Intent intent = new Intent(ACTION_XXXX);

intent.putExtra("intent_add",true);
sendBroadcast(intent);


在编辑成功时发送广播

Intent intent = new Intent(ACTION_XXXX);

intent.putExtra("intent_update",true);
sendBroadcast(intent);


在删除成功时发送广播

Intent intent = new Intent(ACTION_XXXX);

intent.putExtra("intent_delete",true);
sendBroadcast(intent);


这里是通过intent传不同的数据区分,也可以通过不同的action来区分不同的功能

private MyBroadCast mMyBroadCast ;
public static final String ACTION_XXXX1= "action_xxx_xxx1";

public static final String ACTION_XXXX2= "action_xxx_xxx2";

public static final String ACTION_XXXX3= "action_xxx_xxx3";
public void registerMyReceiver() {
mMyBroadCast = new MyBroadCast ();
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(ACTION_XXXX1);

filter.addAction(ACTION_XXXX2);

filter.addAction(ACTION_XXXX3);
registerReceiver(mMyBroadCast , filter);
}

public class MyBroadCast extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
if (ACTION_XXXX1.equals(intent.getAction())) {

} else if (ACTION_XXXX2.equals(intent.getAction())) {

}else if (ACTION_XXXX3.equals(intent.getAction())) {

}


}
}


在添加数据成功时发送广播

Intent intent = new Intent(ACTION_XXXX1);

sendBroadcast(intent);


在编辑成功时发送广播

Intent intent = new Intent(ACTION_XXXX2);

sendBroadcast(intent);


在删除成功时发送广播

Intent intent = new Intent(ACTION_XXXX3);

sendBroadcast(intent);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值