Android中广播的基本原理

Android中广播的基本原理,具体实现流程要点粗略概括如下:

1.广播接收者BroadcastReceiver通过Binder机制向AMS(Activity Manager Service)进行注册;

2.广播发送者通过binder机制向AMS发送广播;

3.AMS查找符合相应条件(IntentFilter/Permission等)的BroadcastReceiver,将广播发送到BroadcastReceiver(一般情况下是Activity)相应的消息循环队列中;

4.消息循环执行拿到此广播,回调BroadcastReceiver中的onReceive()方法。

 对于不同的广播类型,以及不同的BroadcastReceiver注册方式,具体实现上会有不同。但总体流程大致如上。

由此看来,广播发送者和广播接收者分别属于观察者模式中的消息发布和订阅两端,AMS属于中间的处理中心。广播发送者和广播接收者的执行是异步的,发出去的广播不会关心有无接收者接收,也不确定接收者到底是何时才能接收到

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android应用广播是一种机制,用于在应用程序之间或应用程序的组件之间传递消息。以下是Android应用广播的工作原理: 1. 定义广播接收器:在Android应用程序,需要定义一个广播接收器,该接收器定义了要接收的广播消息的类型。 2. 注册广播接收器:在应用程序,需要在代码注册广播接收器,以便系统知道哪些广播接收器对哪些广播感兴趣。 3. 发送广播:在应用程序,需要使用Intent对象发送广播消息。可以使用系统预定义的广播消息,或者可以定义自己的广播消息。 4. 接收广播:当广播消息发送时,系统会通知所有注册的广播接收器,并将广播消息传递给它们。广播接收器会对广播消息进行处理,并执行相应的操作。 以下是一个简单的Android应用广播程序的示例代码: 1. 定义广播接收器 ```java public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 处理广播消息 String message = intent.getStringExtra("message"); Toast.makeText(context, "Received message: " + message, Toast.LENGTH_SHORT).show(); } } ``` 2. 注册广播接收器 ```java IntentFilter filter = new IntentFilter("com.example.MY_BROADCAST"); registerReceiver(new MyBroadcastReceiver(), filter); ``` 3. 发送广播 ```java Intent intent = new Intent("com.example.MY_BROADCAST"); intent.putExtra("message", "Hello, world!"); sendBroadcast(intent); ``` 在此示例,我们定义了一个名为"MyBroadcastReceiver"的广播接收器,并在应用程序注册了它。我们还定义了一个名为"com.example.MY_BROADCAST"的广播消息,并使用Intent对象将它发送到所有已注册的广播接收器。当广播消息发送时,我们的广播接收器会接收到它,并显示一个Toast消息,以显示接收到的消息内容。 请注意,此示例仅涵盖了Android应用广播的基本概念。在实际应用程序,可能需要更复杂的广播消息处理逻辑和更高级的广播接收器注册和管理方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值