一篇文章学会使用Broadcast

Broadcast ——传消息和事件的工具

1.注册一个广播

创建一个继承 BroadcastReceiver的类,重写onReceive()


class PlayMusicReceiver(private val callback:(Boolean)->Unit):BroadcastReceiver() {

    override fun onReceive(context: Context?, intent: Intent?) {
     val isPlay = intent!!.getBooleanExtra("EXTRA",true)
     callback(isPlay)
    }
}

Service中获取刚创建的 BroadcastReceiver和传入了与之前Intent内部action相同的IntentFilter,进行判断可以注册后,调用registerReceiver()注册Broadcast

fun createReceiver(){
      
        val intentFilter = IntentFilter("com.example.zj_action")
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
            registerReceiver(mReceiver,intentFilter,Context.RECEIVER_EXPORTED)
        }else{
            registerReceiver(mReceiver,intentFilter)
        }
    }

2.发送广播

自带sendBroacast(),传入一个Intent(action)即可 ,悄悄说,action是自己取名字当标识符

Intent.putExtra()可以传递额外值给目标

 fun playBroadcast(){
        val intent = Intent("com.example.zj_action")
        intent.putExtra("EXTRA",true)
        sendBroadcast(intent)
    }

3.接收广播

Receiver类中通过高阶函数callback回调了Blooean值,再传递给PlayMusicReceiver的实例化类中

 mReceiver = PlayMusicReceiver{
            if (it){
                playMusic("音频的url地址")
            }else{
             player.stop()
            }
        }
      createReceiver()

相关推荐

  1. 文章学会使用Broadcast

    2024-02-11 14:10:01       28 阅读
  2. 文章学会 MySQL UNION

    2024-02-11 14:10:01       12 阅读
  3. 文章告诉你为什么要使用MybatisPlus框架

    2024-02-11 14:10:01       38 阅读
  4. 文章讲完 Gorm 入门所有使用

    2024-02-11 14:10:01       11 阅读
  5. 学习 canvas标签 这文章足以

    2024-02-11 14:10:01       24 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-11 14:10:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-11 14:10:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-11 14:10:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-11 14:10:01       20 阅读

热门阅读

  1. 深入理解XGBoost:集成学习与堆叠模型

    2024-02-11 14:10:01       32 阅读
  2. K8S容器挂了后一直重启但不成功原因及解决

    2024-02-11 14:10:01       39 阅读
  3. Spring Boot 实现热插拔 AOP

    2024-02-11 14:10:01       29 阅读
  4. CISC3025 自然语言处理

    2024-02-11 14:10:01       33 阅读
  5. K 近邻算法

    2024-02-11 14:10:01       33 阅读
  6. RK3568笔记十三:Zlmedia推流测试

    2024-02-11 14:10:01       33 阅读
  7. 决策树与随机森林算法

    2024-02-11 14:10:01       36 阅读