• 发送广播


          已经直到了广播接收器如何接收广播,接下来就应该知道在应用程序中发送自定义的广播。广播有标准广播和有序广播。

    发送标准广播

         在发送广播之前,需要先定义一个广播接收器来准备接收此广播才行,如下:

        

          接下来修改activity_main.xml中的代码:

    然后修改MainActivity中的代码:

          可以看到,在按钮的点击事件里面加入了发送自定义广播的逻辑,首先构建一个Intent对象,并把要发送的广播的值传入,然后调用Context的sendBroadcast()方法将广播发送出去,这样所有监听com.example.broadcasttest.MY_BROADCAST这条广播的广播接收器就会收到消息,此时发出去的是一条标准广播。由于广播是使用Intent进行传递的,因此可以在Intent中携带一些数据传递给广播接收器。

    发送有序广播

          广播是一种可以跨进程的通信方式,这一点可以从前面接收系统广播的时候可以看出来。因此应用程序内发出的广播,其它的应用程序也是可以收到的。新建另一个项目,并在项目里新建AnotherBroadcastReceiver继承自BroadcastReceiver:

            

    然后在AndroidMainfest.xml对接收器进行注册,这样就可以接收到广播消息了。不过这仍然是标准广播。变为有序广播,MainActivity代码如下:

         即将sendBroadcast()方法改为sendOrderBroadcast()方法,这个方法接收两个参数,第一个是Intent对象,第二个是与权限相关的字符串,这里传入null即可。然后设定广播接收器的接收顺序,修改AndroidMainfest.xml中的代码如下:

    可以看到设置了广播接收器的优先级,优先级较高的接收器可以先收到广播。先收到广播消息的接收器可以选择是否截断广播,如下:

    使用本地广播

          前面所举的发送和接收广播都是属于系统全局的广播,即发出的广播可以被其他任何的应用程序接收到,并且还可以接收到来自其它应用的广播,这样很容易引起安全性问题。为了解决这个安全性问题,Android引入了一套本地广播机制,使用这个广播机制发出的广播只能够在应用程序内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播。

         本地广播的用法并不复杂,主要是使用了一个LocalBroadcastManager来对广播进行管理,并提供了发送广播和注册广播的方法。修改MainActivity,如下:

    需要注意的是,本地广播是无法通过静态注册的方式来接收的。

  • 相关阅读:
    CORS
    ant design vue table 选择当前数据,要如下传
    Web Components
    slot-scope Element-ui 的 slot 关系理解
    Node.js child_process模块中的spawn和exec方法
    node.js关于sendFile的路径问题,以及与send的区别
    uni-app使用uni.onShareAppMessage不生效
    小程序地理定位qqmap-wx-jssdk.js
    L1-009 N个数求和
    L1-008 求整数段和
  • 原文地址:https://www.cnblogs.com/hujingwei/p/5112179.html
Copyright © 2020-2023  润新知