我的代码片段: `私有变量 logoutReceiver:广播接收器? = 空
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
logoutReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
LogUtils.d("action--->")
}
}
val filter = IntentFilter()
filter.addAction("com.example.broadcast.MY_NOTIFICATION")
requireContext().registerReceiver(logoutReceiver!!, filter)
LogUtils.d("register")
Handler().postDelayed({
Intent().let {
it.action = "com.example.broadcast.MY_NOTIFICATION"
requireContext().sendBroadcast(it)
LogUtils.i("send")
}
}, 2000)
}
override fun onDestroy() {
super.onDestroy()
if (logoutReceiver != null) {
requireContext().unregisterReceiver(logoutReceiver!!)
LogUtils.e("unregister")
}
}`
问题是 onReceive() 没有被调用,但是当我用 LocalBroadcastManager 替换 requireContext() 时,它运行良好,compileSdkVersion 是 33,是否需要在新的compileSdkVersion 中添加任何权限?
我用 LocalBroadcastManager 替换 requireContext(),效果很好
我已经使用相同的compileSdkVersion尝试了您的代码,它也可以与requireContext()一起使用,但是onReceive在发送2分钟后命中。也许这个问题与 Handler.postDelayed()