美文网首页Android 小Module
广播:发送有序、无序(标准)广播

广播:发送有序、无序(标准)广播

作者: 穿越平行宇宙 | 来源:发表于2019-07-03 19:57 被阅读3次
image.png

一、创建3个广播接收器类,先静态注册

        enabled 启用
        exported 出口,输出
        priority 优先级

        <receiver
            android:name=".type2.service.MyReceiver1"
            android:enabled="true"
            android:exported="true">

            <intent-filter android:priority="80">
                <action android:name="com.jiyun.action.ABC" />
            </intent-filter>

        </receiver>
        <receiver
            android:name=".type2.service.MyReceiver2"
            android:enabled="true"
            android:exported="true">

            <intent-filter android:priority="90">
                <action android:name="com.jiyun.action.ABC" />
            </intent-filter>

        </receiver>
        <receiver
            android:name=".type2.service.MyReceiver3"
            android:enabled="true"
            android:exported="true">

            <intent-filter android:priority="100">
                <action android:name="com.jiyun.action.ABC" />
            </intent-filter>

        </receiver>

二、写布局

activity_main2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".type2.activity.Main2Activity">

    <Button
        android:id="@+id/sendBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="标准" />

    <Button
        android:id="@+id/sendOrderBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="有序" />

</LinearLayout>

三、activity 包下的

MainActivity2.java

public class Main2Activity extends AppCompatActivity implements View.OnClickListener {

    /**
     * 标准
     */
    private Button mSendBtn;
    /**
     * 有序
     */
    private Button mSendOrderBtn;

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

    private void initView() {
        mSendBtn = (Button) findViewById(R.id.sendBtn);
        mSendBtn.setOnClickListener(this);
        mSendOrderBtn = (Button) findViewById(R.id.sendOrderBtn);
        mSendOrderBtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.sendBtn:

                // 定义action 活动,发送标准广播
                Intent intent = new Intent("com.jiyun.action.ABC");
                intent.putExtra("name", "guolei");
                sendBroadcast(intent);

                break;
            case R.id.sendOrderBtn:

                // 发送有序广播
                Intent intent1 = new Intent("com.jiyun.action.ABC");
                sendOrderedBroadcast(intent1, null);

                break;
        }
    }
}

四、service 包下的

1. MyReceiver1.java:接收到传输的消息,并toast,然后跳转到MainActivity页面

public class MyReceiver1 extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        // 接收广播发送的消息
        String name = intent.getStringExtra("name");
        Toast.makeText(context, "MyReceiver1" + name, Toast.LENGTH_SHORT).show();

        // 跳转到第一个页面
        Intent intentMain = new Intent(context, MainActivity.class);
        intentMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//非页面之外启动页面,需要自带加载任务栈
        context.startActivity(intentMain);

    }

}

2. MyReceiver2.java:toast,并且拦截广播

public class MyReceiver2 extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"MyReceiver2",Toast.LENGTH_SHORT).show();
        abortBroadcast();//拦截广播
    }

}

3. MyReceiver3.java:toast

public class MyReceiver3 extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"MyReceiver3",Toast.LENGTH_SHORT).show();
    }

}

相关文章

  • 广播:发送有序、无序(标准)广播

    一、创建3个广播接收器类,先静态注册 二、写布局 activity_main2.xml 三、activity 包下...

  • Broadcast 学习

    广播类别:标准广播,有序广播,本地广播 标准广播异步发送,所有人能够接收只要注册接收器就能监听 有序广播顺序发送,...

  • android的广播

    Android的广播方式分为有序广播和标准广播。 发送广播 在activity中发送标准广播,调用的方法是send...

  • Android广播机制

    广播机制 发送广播 Android中的广播主要分为两种类型——标准广播和有序广播 发出标准广播 标准广播发出后,所...

  • 发送自定义广播

    发送自定义广播 广播分类:标准广播、有序广播标准广播:所有程序都可以同时接收到(完全异步执行) 有序广播:优先级高...

  • 第一行代码

    —— 广播机制 纲要 广播简介 广播接收动态注册静态注册 广播发送标准广播有序广播 本地广播 最佳实践 简介-全局...

  • 发送自定义广播

    一、发送标准广播 二、发送有序广播 截断广播: 截断后,后续的接收器就不会接收到广播了。 接收广播的先后顺序:优先...

  • 安卓基础学习 Day11 |常用组件-广播和服务

    目录一、广播(一)广播接收者(二)自定义广播的发送与接收(三)有序广播和无序广播二、服务(一)基础知识(二)测试三...

  • 05广播-发送自定义广播及本地广播

    广播主要分两种类型:标准广播和有序广播 发送标准广播 首先定义一个广播接收器来接收此广播,新建一个MyBroadc...

  • 有序广播和无序广播

    1、 发送无序广播:创建Intent,设置action,通过sendBroadcast(intent)就可以把广播...

网友评论

    本文标题:广播:发送有序、无序(标准)广播

    本文链接:https://www.haomeiwen.com/subject/mrzchctx.html