Android框架内Activity 之间消息的实现

  我的理解,Acitivity之间的互动两种方式,一种是利用startAcitivity实现父子之间的互动;一种是利用Intent机制来实现。

  startActivity一般是用在一个应用内部,而Intent机制可以用在不同应用之间。

  startActivity可以这样理解,如同在一个Form中启动另外一个Form,所以他们之间有互动联系是必然的。如果想把子Acitity的执行情况传回给父Activity,就可以利用startActivityForResult来实现。并在子Activity中利用setResult来设置发挥状态及额外信息。

  其实这也是一种Intent机制。对于需要调用外部程序,或者侦听外部消息并作出响应的话,利用Intent就没有错。总的理解就如同windows编程中所谓的消息,Intent如同消息,我们想办法创建一个Intent消息,然后利用Intent.putExtra把需要传递的数据一并打包到Intent消息之中,然后根据需要以不同的方式广播出去,如需要考虑优先级的消息可以利用sendOrderedBroadcast进行广播(这种Intent被成为Broadcast Intent,我的理解就是普通的Intent)。如果需要广播特殊的设备状态或者自己的STICKY消息时,就可以考虑使用sendStickyBroadcast来广播Sticky Intent消息(比如,电池状态等)。

  有消息的发送者就必然有消息的接收者,要接收消息,就必须首先在Manifest文件中明确声明广播的接收者,我想这大概也是出于便于权限管理的原因。然后在其中利用<receiver>标记定义一个Broadcast Receiver,由于我们的应用必然更加专注于某一方面的消息,所以,在<receiver>标签内部利用<intent-filter>来定义需要接收消息的过滤器。

  尽管综合来看,不管是那一种方式,实质上都是在利用Intent来实现,但毕竟还有体内循环和体外循环的差别。也许有人说,从应用中利用如下代码即可自动调用拨号程序,那拨号程序也不是自己的应用啊。我想说的是,这有点像在一个HTML应用中嵌套了一个AcitiveX对象,这个AcitiveX对象不一定非得是自己的应用,但也得算作自己应用所实现功能的扩展。

  自动调用拨号程序的实现:

  Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:0311-12345678"));

  startActivity(intent);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值