本地广播是一种只在应用程序内部传递的广播,只能由应用程序内部的组件发送和接收。本地广播比全局广播更高效,因为它们不需要跨越应用程序间的进程边界传递。

在 Kotlin 中,可以使用 LocalBroadcastManager 类来发送和接收本地广播。以下是发送本地广播的示例代码:

val intent = Intent('my-custom-event')
intent.putExtra('message', 'Hello, world!')
LocalBroadcastManager.getInstance(this).sendBroadcast(intent)

此代码创建一个带有'my-custom-event'作为 action 的 Intent,并使用 putExtra() 方法添加一个包含'Hello, world!'消息的数据项。然后,通过 LocalBroadcastManager 的实例调用 sendBroadcast() 方法来发送广播。

接收本地广播的示例代码如下所示:

val receiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        val message = intent?.getStringExtra('message')
        Log.d('MyApp', 'Received message: $message')
    }
}

val filter = IntentFilter('my-custom-event')
LocalBroadcastManager.getInstance(this).registerReceiver(receiver, filter)

此代码创建一个 BroadcastReceiver 实例,并实现 onReceive() 方法以处理接收到的广播。然后,创建一个 IntentFilter,用于匹配接收的广播的 action。最后,通过 LocalBroadcastManager 的实例调用 registerReceiver() 方法来注册广播接收器。

请注意,必须在应用程序的生命周期内(例如 activity 或 service)注册广播接收器,并且必须在不再需要接收广播时注销广播接收器。这可以通过调用 LocalBroadcastManagerunregisterReceiver() 方法来完成。

LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver)
Android Kotlin 本地广播:高效的应用内消息传递

原文地址: https://www.cveoy.top/t/topic/nGDA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录