通过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);
之前图方便就在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);
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories