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
原创粉丝点击