You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin广播接收器注册异常?定时器服务广播无法接收

Android秒表应用广播接收器无法接收消息问题

问题详情

我用Kotlin开发一款带秒表功能的Android应用,其中TimerService类的定时任务可每秒正确执行(日志正常输出),代码如下:

private inner class MyTask(private var time: Double) : TimerTask() {
    override fun run(){
        Log.d("SERVICE", time.toString())
        val intent = Intent(TIMER_UPADATED)
        time++
        intent.putExtra(TIME_EXTRA, time)
        sendBroadcast(intent)
    }
}

但对应的广播接收器无法接收任何消息(无日志输出),初始注册代码如下:

registerReceiver(
            timeReceiver, IntentFilter(TimerService.TIMER_UPADATED)
        )

private val timeReceiver: BroadcastReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            time = intent.getDoubleExtra(TimerService.TIME_EXTRA, 0.0)
            Log.d("RECEIVER", time.toString())
        }
    }

我判断问题出在接收器注册环节。教程中的上述写法本应生效,但该registerReceiver方法现已被弃用。我尝试了官方推荐的新版本写法,仍然无法接收广播:

registerReceiver(
        requireContext(), updateTime, IntentFilter(TimerService.TIMER_UPADATED),
        ContextCompat.RECEIVER_NOT_EXPORTED
    )

项目SDK配置

项目build.gradle中的SDK配置如下:

android {
    namespace = "com.myapp.myapp"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.myapp.myapp"
        minSdk = 33
        targetSdk = 34
}

内容的提问来源于stack exchange,提问作者Elis Hazelton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:02:12