Android Ordered Broadcast 有序广播

这里写图片描述

代码设置IntentFilter:

        IntentFilter intentFilter = new IntentFilter();
        intentFilter.setPriority(15);
        intentFilter.addAction("shortcut.song.com.myapplication.MY_BROADCAST");
        intentFilter.addCategory("android.intent.category.LAUNCHER");

MyBroadcast .java

package shortcut.song.com.myapplication;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

/**
 * Created by Administrator on 2017/8/16 0016.
 */

public class MyBroadcast extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "接收到的Intent Action为:"+intent.getAction() +
                        " \n  消息内容:"+intent.getStringExtra("msg")
                        , Toast.LENGTH_SHORT).show();
        Bundle bundle = new Bundle();
        bundle.putString("first", "Fisrt BroadcastReceiver set message.");
        // 将bnudle放入结果中
        setResultExtras(bundle);

        // 取消Broadcast的继续传播
        //abortBroadcast();
    }
}

MyBroadcastReceiver2 .java

package shortcut.song.com.myapplication;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

/**
 * Created by Administrator on 2017/8/17 0017.
 */

public class MyBroadcastReceiver2 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = getResultExtras(true);
        // 解析前一个BroadcastReciver所存入的key为fisrt的消息
        String first = bundle.getString("first");
        Toast.makeText(context,"上一个Broadcast存入的消息为:" + first, Toast.LENGTH_SHORT).show();
    }
}

AndroidManifest.xml

         <receiver android:name=".MyBroadcast">
            <intent-filter android:priority="20">
                <action android:name="shortcut.song.com.myapplication.MY_BROADCAST" />
            </intent-filter>
        </receiver>
        <receiver android:name=".MyBroadcastReceiver2">
            <intent-filter android:priority="0">
                <action android:name="shortcut.song.com.myapplication.MY_BROADCAST" />
            </intent-filter>
        </receiver>
package shortcut.song.com.myapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class OrderedBroadcastActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ordered_broadcast);
    }

    public void sendOrderedBroadCast(View v) {
        Intent intent = new Intent();
        intent.setAction("shortcut.song.com.myapplication.MY_BROADCAST");
        intent.putExtra("msg", "First message.");

        // 发送有序广播
        sendOrderedBroadcast(intent, null);
    }
}

运行效果:

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SongYuLong的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值