发送有序广播

1.布局文件
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/stitch_one"
    tools:context=".MainActivity">

    <Button
        android:text="发送有序广播"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         android:onClick="send"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="80dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:background="#FBFBFF"
         android:textSize="20sp"
         />
</RelativeLayout>
2.在布局文件中定义了一个Button按钮,并为按钮注册一个点击事件send,当点击这个按钮时,会发送一条有序广播。
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void send(View view){
        Intent intent=new Intent();
        //定义广播的事件类型
        intent.setAction("Intercept_Stitch");
        //发送广播
        sendOrderedBroadcast(intent,null);
    }
}

3.创建三个广播接收者

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * Created by Administrator on 2017/6/1.
 */

public class MyBroadcastReceiverOne extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyBroadcastReceiverOne"," One接收到广播");
    }
}

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * Created by Administrator on 2017/6/1.
 */

public class MyBroadcastReceiverTwo extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyBroadcastReceiverTwo"," Two接收到广播");
    }
}

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * Created by Administrator on 2017/6/1.
 */

public class MyBroadcastReceiverThree extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyBroadcastReceiverThree"," Three接收到广播");
    }
}
运行效果如图:

注意广播接收者需要在清单文件中配置,由于priority的值不同,执行顺序不同,代码如下
<receiver
       android:name=".MyReceiverOne"
       android:enabled="true"
       android:exported="true">
       <intent-filter android:priority="1000">
            <action android:name="Intercept_Stitch" />
       </intent-filter>
</receiver>
<receiver
      android:name=".MyReceiverTwo"
      android:enabled="true"
      android:exported="true">
      <intent-filter android:priority="500">
          <action android:name="Intercept_Stitch" />
      </intent-filter>
</receiver>
<receiver
      android:name=".MyReceiverThree"
      android:enabled="true"
      android:exported="true">
     <intent-filter android:priority="300">
          <action android:name="Intercept_Stitch" />
      </intent-filter>
</receiver>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 中发送有序广播,可以使用 `sendOrderedBroadcast()` 方法。这个方法会按照指定的顺序发送广播给所有的接收器,确保接收器的顺序是一致的,并且可以通过设置优先级来控制接收器的顺序。 下面是一个简单的例子: ```java Intent intent = new Intent("com.example.MY_ACTION"); intent.putExtra("message", "Hello, world!"); // 设置广播接收器的顺序 List<String> receiverPermissions = new ArrayList<>(); receiverPermissions.add("com.example.permission.RECEIVE_MY_ACTION"); receiverPermissions.add("android.permission.RECEIVE_MY_ACTION"); sendOrderedBroadcast(intent, receiverPermissions, new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // 处理接收到的广播 String message = intent.getStringExtra("message"); Log.d("MyApp", "Received broadcast message: " + message); } }, null, Activity.RESULT_OK, null, null); ``` 在这个例子中,我们创建了一个名为 `com.example.MY_ACTION` 的广播,并设置了一个包含消息的额外数据。然后我们调用 `sendOrderedBroadcast()` 方法,并传递接收器的顺序列表、一个广播接收器,以及其他参数。最后,我们在广播接收器的 `onReceive()` 方法中处理接收到的广播。 需要注意的是,发送有序广播需要指定接收器的顺序,这意味着你需要在应用程序的清单文件中为每个接收器定义一个优先级,以便系统可以按照正确的顺序发送广播
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值