您的位置:首页 > 移动开发 > Android开发

通过broadcastReceiver刷新页面

2015-12-15 13:27 344 查看
在做项目时经常遇到一个页面上个列表,然后会对列表数据进行添加,删除,编辑等操作,

之前图方便就在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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息