Android 四大组件之广播Broadcast (面试版)

前言

广播(Broadcast)是Android四大组件之一,是Android系统内部或其他应用程序向其他应用程序发送消息的机制。广播是一种异步的、无连接的通信方式,不需要建立额外的连接就可以在应用程序之间传递消息。

下面是广播的两种类型:

系统广播:Android系统发出的广播,例如网络状态改变、电量低等。

应用程序广播:应用程序发出的广播,可以在应用程序之间进行通信。

在广播中,应用程序可以通过发送Intent对象来发送广播,并通过注册BroadcastReceiver组件接收广播。

下面是发送广播的代码:

Intent intent = new Intent("com.example.broadcast.MY_BROADCAST");
sendBroadcast(intent);

下面是接收广播的代码:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 处理接收到的广播
    }
}

// 在清单文件中注册BroadcastReceiver
<receiver android:name=".MyBroadcastReceiver">
    <intent-filter>
        <action android:name="com.example.broadcast.MY_BROADCAST"/>
    </intent-filter>
</receiver>

在上面的代码中,我们发送了一个名为“com.example.broadcast.MY_BROADCAST”的广播,然后通过MyBroadcastReceiver组件接收广播并处理。

广播是Android开发中我们可以通过Intent携带数据,以便在接收广播时获取需要的信息。

例如,我们可以这样携带数据:

Intent intent = new Intent("com.example.broadcast.MY_BROADCAST");
intent.putExtra("message", "Hello, Broadcast!");
sendBroadcast(intent);

然后我们可以在接收广播时获取数据:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String message = intent.getStringExtra("message");
        // 处理接收到的广播
    }
}

有时,我们可能希望在接收广播后有一个组件做出反应,例如显示一条通知。这时,我们可以使用PendingIntent来触发另一个组件,如下所示:

Intent intent = new Intent(this, MyActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My Notification")
        .setContentText("Hello, Notification!")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT)
        .setContentIntent(pendingIntent)
        .setAutoCancel(true);

NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(NOTIFICATION_ID, builder.build());

上面的代码通过PendingIntent启动MyActivity组件,并显示一条通知。

另外,有时我们希望在接收广播后立即停止广播的传播。这时,我们可以使用abortBroadcast()方法,如下所示:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void
    public void onReceive(Context context, Intent intent) {
		// 接收到广播后的操作
		// ...
		// 停止广播的传播
		abortBroadcast();
	}
}

最后,我们需要在AndroidManifest.xml中注册我们的广播接收器。这可以通过在应用程序的元素下添加以下代码来完成:

<receiver android:name=".MyBroadcastReceiver">
    <intent-filter>
        <action android:name="com.example.broadcast.MY_BROADCAST" />
    </intent-filter>
</receiver>

现在,当我们发送广播时,MyBroadcastReceiver组件将接收到广播,并执行我们在onReceive()方法中编写的代码。

总结:在Android中,广播是一种重要的组件,用于在应用程序的不同部分之间传递消息。通过使用Intent,PendingIntent和abortBroadcast()等方法,我们可以在广播中携带数据,并在接收广播时触发其他组件。希望本文对您有所帮助,您现在已经掌握了如何创建和使用Android中的广播组件。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值