广播

  • 标准广播
    异步、效率高
  • 有序广播
    同步执行,优先级高的 BroadcastReceiver 先收到广播信息,调用 abortBroadcast() 截断正在传递的广播

注册广播

  • 动态注册
class MainActivity : AppCompatActivity() {

    lateinit var timeChangeReceiver: TimeChangeReceiver

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val intentFilter = IntentFilter()
        intentFilter.addAction("android.intent.action.TIME_TICK")
        timeChangeReceiver = TimeChangeReceiver()
        registerReceiver(timeChangeReceiver, intentFilter)
    }

    override fun onDestroy() {
        super.onDestroy()
        unregisterReceiver(timeChangeReceiver)
    }

    inner class TimeChangeReceiver : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            Toast.makeText(context, "Time has changed", Toast.LENGTH_SHORT).show()
        }
    }
}
  • 静态注册
    →New→Other→Broadcast Receiver

Exported属性表示是否允许这个BroadcastReceiver 接收本程序以外的广播
Enabled属性表示是否启用这个BroadcastR eceiver

Android Studio 自动在 ANdroidManifest.xml文件中完成注册

发送广播

  1. 发送标准广播
val intent = Intent("com.example.broadcasttest.MY_BROADCAST")
intent.setPackage(packageName) 
sendBroadcast(intent)

默认发送隐式广播,调用 setPackage() 传入要接收广播的应用程序包名,从而将它变成了显式广播,否则静态注册的BroadcastReceiver将无法接到这条广播。

  1. 发送有序广播
sendOrderedBroadcast(intent, null)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 【Android 广播】 BroadcastReceiver简介 BroadcastReceiver(广播接收器)...
    Rtia阅读 3,551评论 1 17
  • 作为Android的四大组件之一,广播机制一直萦绕在我们生活中,比如手机开机完成后会发出一条广播,手机电量不足时也...
    loser先生阅读 1,507评论 0 2
  • 广播接收器 是Android的四大组件之一,可见广播在Android中的重要性; 1. 什么是广播? 广播(Bro...
    Lost_Robot阅读 2,057评论 2 10
  • 前言 本来想写一下广播的,发现查阅后有整理的不错的,只好转载图个简便,日后好复习转载:http://www.cnb...
    提升即效率阅读 1,463评论 0 10
  • 越不懂的越爱装 大家都同等:IT世界没有难不难,只有是否了解过 挑战目录[https://www.jianshu....
    愿你我皆是黑马阅读 143评论 0 0

友情链接更多精彩内容