Broadcast实现Activity之间刷新或值传递
来源:互联网 发布:cad制图软件好坏 编辑:程序博客网 时间:2024/05/22 15:31
Activity之间UI刷新,是个一个很常见的应用场景(Scene)。虽然可以定义一个静态变量和方法去搞定,但不推荐采用静态方法去操作。Android的广播机制是信心传递的一种方式,Android广播的特点是:支持消息发送并可以允许开发者对消息做出响应处理,很类似于系统消息监听。广播在一定程度上很类似于推送,但它不是推送,推送就是现实里面的广播,消息播出去了就不管了,错过了就是错过了。
需求:选择任务的执行人,但是好友列表是从另一个Activity来选的,选择后在原来打开的Activity中刷新选择的结果。
第一个Activity内部广播
public class DraftEditActivity extends Activity{ private BroadcastReceiver broadcastReceiver; @Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState); .............. // 初始化广播接收initBroadcastReceiver(); } public void initBroadcastReceiver(){broadcastReceiver = new BroadcastReceiver(){@Overridepublic void onReceive(Context arg0, Intent arg1){setPeopleToTags();}};IntentFilter filter = new IntentFilter(AddPersonActivity.action);registerReceiver(broadcastReceiver, filter);} // 设置显示选择的人 public void setPeopleToTags(){} @Override public void onDestroy(){unregisterReceiver(broadcastReceiver); super.onDestroy();}}
第二个Activity发送广播
public class AddPersonActivity extends Activity{ public static final String action = "com.scengine.escheduler.editdraft.broadcast.action"; @Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState); .............. } @Overridepublic void finish(){// TODO Auto-generated method stubIntent intent = new Intent(action); sendBroadcast(intent);super.finish();}}
在窗口关闭的时候发送广播,然后更新上一个Activity。
测试效果图
图一:
图二:
图三:
Activity之间传值
Activity之间传值可以使用Intent来传递。
Intent intent = new Intent(action); intent.putExtra("data", "hello,boonya"); sendBroadcast(intent);
注:广播注册还可以在AndroidManifest.xml中注册receiver即可,上面没有采用此(静态注册)方式,而是在代码中注册(动态注册)的,以上就是全部内容了,欢迎指正!
其他方式实现Activity刷新
有人用Application来操作一个Handler异步线程处理器,实现UI刷新,在Activity中调用getHandler和setHandler来处理。
Application由于是生存周期与整个应用程序存活周期是一致的,而且它是应用实例的上层架构,所以这个是方案也是可取的。
public class MyApplication extends Application { // 共享变量 private MyHandler handler = null; // set方法 public void setHandler(MyHandler handler) { this.handler = handler; } // get方法 public MyHandler getHandler() { return handler; } }
0 0
- Broadcast实现Activity之间刷新或值传递
- Activity之间传递值
- 使用Intent对象来实现两个(或多个)Activity之间的跳转,并实现在Activity之间传递参数。
- Activity之间的值传递
- Activity之间的值传递
- bundle实现Activity之间的数据传递
- android之如何在两个activity之间传递handler_利用broadcast广播机制
- android之如何在两个activity之间传递handler_利用broadcast广播机制
- android之如何在两个activity之间传递handler_利用broadcast广播机制
- activity之间参数传递&&获取activity返回值&&activity生命周期
- Android Activity之间的值传递
- Android的Activity之间的值传递
- activity之间传递List<E>值
- Intent在Activity之间传递值
- Activity向Fragment之间传递值
- Activity之间传递参数之值对象
- Activity 与Fragement之间传递值
- activity之间参数传递
- JBPM4.3项目和tomcat6.0.26的兼容问题
- Spring配置项<context:annotation-config/>解释说明
- sql: MySQL and Microsoft SQL Server Stored Procedures IN, OUT using csharp code
- sql: MySQL and Microsoft SQL Server Stored Procedures IN, OUT using csharp code
- SQLite学习手册(C/C++接口简介)
- Broadcast实现Activity之间刷新或值传递
- 浅谈DOM基础
- 走进swfit(三)Swift调用OC
- SQLite学习手册(内置函数)
- C语言下使用复数类型完成数学计算
- SQLite学习手册(索引和数据分析/清理)
- infobright安装(RPM包,二进制,源码编译)、升级及配置
- java中的sleep()和wait()的区别
- HDU 1862 EXCEL排序