Android本地广播工具类

LocalBroadcastUtil
复制代码
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import androidx.localbroadcastmanager.content.LocalBroadcastManager

/**
 * 本地广播工具类
 */
object LocalBroadcastUtil {

    private var manager: LocalBroadcastManager? = null

    fun receive(context: Context, callback: ((bundle: Bundle?) -> Unit)?) {
        manager = LocalBroadcastManager.getInstance(context)
        val intentFilter = IntentFilter()
        intentFilter.addAction("local_broad_cast")

        val receiver = object : BroadcastReceiver() {
            override fun onReceive(context: Context, intent: Intent) {
                callback?.invoke(intent.getBundleExtra("data"))
                manager?.unregisterReceiver(this)
            }
        }
        manager?.registerReceiver(receiver, intentFilter)
    }

    fun send(bundle: Bundle? = null) {
        manager?.let {
            val intent = Intent()
            intent.setAction("local_broad_cast")
            intent.putExtra("data", bundle)
            it.sendBroadcast(intent)
        }
    }

}
复制代码

 

posted @   野生野鸡码农  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示