我是靠谱客的博主 天真飞机,最近开发中收集的这篇文章主要介绍Android-Broadcast广播事件(1)-简介及普通广播调用步骤前言1. 广播事件开发步骤2. 例子,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

BroadcastReceiver即广播接收器,是专门用于接受广播消息以及做出相应处理的组件。其本质就是一个全局监听器,接收程序所发出的Broadcast Intent。

但是它是没有用户界面的,可以启动一个Activity来响应接收到的信息或者用NotificationManager来通知用户。
总体而言,广播机制包含三个要素:
1. 发送广播的Broadcast;
2. 接收广播的BroadcastReceiver;
3. 以及用于前面两者之间传递消息的Intent;

1. 广播事件开发步骤

1. 定义一个广播接收器

只需重写onReceive方法

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }
    @Override
    public void onReceive(Context context, Intent intent) {
        //method
    }
}

2. 注册广播事件

注册广播事件 有两种方式

  • 动态注册,代码中调用BroadcastReceiver的Context的registerReceiver()方法进行注册
//        实例化定义好的BroadcastReceiver
        MyReceiver receiver=new MyReceiver();
//        实例化过滤器,并设置过滤的广播的action,
        IntentFilter filter=new IntentFilter("MY_ACTION");
//        注册
        registerReceiver(receiver,filter);
  • 静态注册
<receiver android:name=".MyReceiver">
            <intent-filter>
                <action android:name="MY_ACTION"></action>
            </intent-filter>
  </receiver>

3. 发送广播

               Intent intent=new Intent();
//               action需要与注册广播的action一样
               intent.setAction("MY_ACTION");
//               传递的消息
               intent.putExtra("msg","send Broadcast");
//               发送
               sendBroadcast(intent);

4. 设置接受广播的处理函数

 public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
        //method
        String msg=intent.getStringExtra("msg");
        System.out.println(msg);
        Toast.makeText(context,msg,Toast.LENGTH_LONG).show();
    }

2. 例子

  • MainActivity
public class MainActivity extends AppCompatActivity {
Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//        实例化定义好的BroadcastReceiver
        MyReceiver receiver=new MyReceiver();
//        实例化过滤器,并设置过滤的广播的action,
        IntentFilter filter=new IntentFilter("MY_ACTION");
//        注册
        registerReceiver(receiver,filter);

button=(Button)findViewById(R.id.button);
       button.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               Intent intent=new Intent();
//               action需要与注册广播的action一样
               intent.setAction("MY_ACTION");
//               传递的消息
               intent.putExtra("msg","send Broadcast");
//               发送
               sendBroadcast(intent);

           }
       });
    }
}
  • BroadcastReceiver
ublic class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
        //method
        String msg=intent.getStringExtra("msg");
        System.out.println(intent.getAction());
        System.out.println(msg);
        Toast.makeText(context,msg,Toast.LENGTH_LONG).show();
    }
}
  • 测试
    发送广播后,logcat显示为:
    测试结果
    在这里我们可以发现,广播接受器与发送的广播是通过intent的action属性来匹配的,当相互action一致,则广播接收器回调onReceive函数执行操作

最后

以上就是天真飞机为你收集整理的Android-Broadcast广播事件(1)-简介及普通广播调用步骤前言1. 广播事件开发步骤2. 例子的全部内容,希望文章能够帮你解决Android-Broadcast广播事件(1)-简介及普通广播调用步骤前言1. 广播事件开发步骤2. 例子所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部