Android Studio 广播的实现

1.创建一个应用程序,点击按钮实现发送广播。收到广播后在logcat中显示“智能终端开发课程在学银在线开课啦”。

运行效果如图所示:

activity_gb.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/loading">

    <Button
        android:text="发送广播消息"
        android:layout_marginTop="@android:dimen/app_icon_size"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:onClick="send"/>

</LinearLayout>

GBActivity.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;

public class GBActivity extends AppCompatActivity {

    protected MyReceiver receiver;
    protected IntentFilter intentFilter;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gb);

        receiver = new MyReceiver();
        intentFilter = new IntentFilter();
        intentFilter.addAction("zy_send");
        registerReceiver(receiver,intentFilter);
    }
    public void send(View view){
        Intent intent = new Intent();
        //定义广播事件类型
        intent.setAction("zy_send");
        //发送广播
        sendBroadcast(intent);
    }
    protected void onDestroy(){
        super.onDestroy();
        unregisterReceiver(receiver);
    }
}

MyReceiver.java

package com.example.myapplication;

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


public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyReceiver","智能终端开发课程在学银在线开课啦");
    }
}

2.创建三个广播接收者1、2、3,并在注册时设置广播接收者的优先级,实现有序广播,要求按照3、2、1的顺序接受广播消息,在logcat中按接受顺序显示广播接收者的名称。

activity_gb.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/loading">

    <Button
        android:text="发送有序广播信息"
        android:layout_marginTop="@android:dimen/app_icon_size"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:onClick="send"/>

</LinearLayout>

GBActivity.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;

public class GBActivity extends AppCompatActivity {

    protected MyReceiver receiver;
    protected MyReceiver2 receiver2;
    protected MyReceiver3 receiver3;
    protected IntentFilter intentFilter;
    protected IntentFilter intentFilter2;
    protected IntentFilter intentFilter3;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gb);

        receiver = new MyReceiver();
        intentFilter = new IntentFilter();
        intentFilter.addAction("zy_send");
        intentFilter.setPriority(200);

        receiver2 = new MyReceiver2();
        intentFilter2 = new IntentFilter();
        intentFilter2.addAction("zy_send");
        intentFilter2.setPriority(300);

        receiver3 = new MyReceiver3();
        intentFilter3 = new IntentFilter();
        intentFilter3.addAction("zy_send");
        intentFilter3.setPriority(400);

        registerReceiver(receiver3,intentFilter3);
        registerReceiver(receiver2,intentFilter2);
        registerReceiver(receiver,intentFilter);
    }
    public void send(View view){
        Intent intent = new Intent();
        //定义广播事件类型
        intent.setAction("zy_send");
        //发送广播
        sendOrderedBroadcast(intent,null);
    }
    protected void onDestroy(){
        super.onDestroy();
        unregisterReceiver(receiver);
    }
}

MyReceiver.java

package com.example.myapplication;

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


public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyReceiver","智能终端开发课程在学银在线开课啦1");
    }
}

MyReceiver2.java

package com.example.myapplication;

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

public class MyReceiver2 extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyReceiver2","智能终端开发课程在学银在线开课啦2");
    }
}

MyReceiver3.java

package com.example.myapplication;

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

public class MyReceiver3 extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("MyReceiver3","智能终端开发课程在学银在线开课啦3");
    }
}

猜你喜欢

转载自www.cnblogs.com/nmlwh/p/12980181.html