zoukankan      html  css  js  c++  java
  • 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");
        }
    }
  • 相关阅读:
    itext itextpdf 版本概要介绍
    github上的优秀项目和开发环境配置
    tfs2012 的体验地址
    Linux网卡攻略
    展现图表JavaScript库 Javascript web charts [参考地址]
    JavaEE的几个参考
    dsl boo3个例子 9
    已读的和在读的一些C++经典图书
    WinRT参考资料
    Linux性能监测工具
  • 原文地址:https://www.cnblogs.com/nmlwh/p/12980181.html
Copyright © 2011-2022 走看看