在activity之间传递handler(三)
2016-01-12 15:04
405 查看
续 “在activity之间传递handler(二)”~
要解决的问题是: 在 activity A 里面打开了另一个activity B,在activity B 不关闭的情况下,也就是界面layout不变,发消息给前一个activity A, activity A接收消息,执行对应的操作。最先想用handler在activity之间传递消息,现在想到其实用broadcast也可以达到同样的目的,虽然不需要handler了。这种广播的方式也可以保持代码的独立性和私密性。
用Broacast的方法在两个activity之间传递数据。假设两个activity分别为MainActivity和OtherActivity,方法详细步骤如下。
1.在MainActivity里面定义广播接收器BroadcastReceiver,并注册。
注册代码如下,OtherActivity.action是定义在OtherActivity里面的静态变量。
2.在OtherActivity里面发送广播,需要定义intent,把action设置进去,再绑定要发送的数据。这里还定义了一个按钮,点击按钮,activity就发送广播。
3.MainActivity就收到广播啦。将广播里intent的内容解析出来就可以执行对应操作了。
附Tips:
另一个activity开始时,应用就启动了一个新线程,此时原来activity的线程并没有停止,它继续运行。
总结:
用了三种方法在activity之间传递数据,保持app的layout不变,另外的activity接收消息执行操作:(1)static handler 的方法,用handler发送message (2)定义application,在application作为中间媒介传递handler,用handler发送message (3)用broadcast传递intent,intent里面绑定数据。
要解决的问题是: 在 activity A 里面打开了另一个activity B,在activity B 不关闭的情况下,也就是界面layout不变,发消息给前一个activity A, activity A接收消息,执行对应的操作。最先想用handler在activity之间传递消息,现在想到其实用broadcast也可以达到同样的目的,虽然不需要handler了。这种广播的方式也可以保持代码的独立性和私密性。
用Broacast的方法在两个activity之间传递数据。假设两个activity分别为MainActivity和OtherActivity,方法详细步骤如下。
1.在MainActivity里面定义广播接收器BroadcastReceiver,并注册。
private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.e("TAG"," ++ broadcastReceiver++ "); textViewOld.append(intent.getExtras().getString("ActivityB") + "\n"); } };
注册代码如下,OtherActivity.action是定义在OtherActivity里面的静态变量。
IntentFilter filter = new IntentFilter(OtherActivity.action); registerReceiver(mReceiver,filter);
2.在OtherActivity里面发送广播,需要定义intent,把action设置进去,再绑定要发送的数据。这里还定义了一个按钮,点击按钮,activity就发送广播。
public static final String action = "jason.broadcast.action"; buttonBroadcast = (Button)findViewById(R.id.buttonBroadcast); buttonBroadcast.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent2 = new Intent(action); intent2.putExtra("ActivityB","I am from the broadcast of activity B"); sendBroadcast(intent2); } });
3.MainActivity就收到广播啦。将广播里intent的内容解析出来就可以执行对应操作了。
附Tips:
另一个activity开始时,应用就启动了一个新线程,此时原来activity的线程并没有停止,它继续运行。
总结:
用了三种方法在activity之间传递数据,保持app的layout不变,另外的activity接收消息执行操作:(1)static handler 的方法,用handler发送message (2)定义application,在application作为中间媒介传递handler,用handler发送message (3)用broadcast传递intent,intent里面绑定数据。
相关文章推荐
- Table布局
- protobuf 理解
- windows下并发I/O服务器模型对比(一)
- Jquery ajax方法解析返回的json数据
- ios 旋转手势
- 第一篇技术博客
- 数组名与数组名前加取地址符
- 为什么你必须得学些 TCP/IP 的知识?
- Spring的scope属性
- 如何写简历?
- 缓存穿透与缓存雪崩
- Windows7系统下svn图标不显示的完美解决方法
- 米兔故事机总结
- 关于Mysql的mysql.sock文件
- 关于unity中的update、Lateupdate和FixedUpdate
- Servlet如何从浏览器的表单获取中文信息并保存到磁盘的xml文档中不出现乱码
- ios 缩放手势
- easyui为tabs添加右键菜单
- 安卓开发之百度地图定位
- linux常用命令及学习小结(2)--压缩、挂载、文件编辑