zoukankan      html  css  js  c++  java
  • Android学习笔记(十)BroadcastReceiver初体验

      BroadcastReceiver是Android系统的四大组件之一,本质是一种全局的监听器,用于接收系统全局的广播消息。真因为如此,BroadcastReceiver可以很方便的是实现系统中不同组件之间的通讯。

    一、创建BroadcastReceiver

      创建一个BroadcastReceiver很简单,只需创建一个BroadcastReceiver的子类即可:

    public class MyReceiver extends BroadcastReceiver {
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		//如果onReceive内的操作10s内没有执行完成,Android会认为该进程无响应,所以不要再此作耗时操作
    	}
    } 

      

    二、两种指定Receiver匹配的Intent的方式

      第一种:在AndroidManifest.xml文件中配置,如下:

    <receiver android:name="com.codingblock.receiver.MyReceiver">
                 <intent-filter>
                     <action android:name="com.codingblock.receiver.action.MyReceiver"/>
                 </intent-filter>
    </receiver> 

      第二种:在代码中动态注册,如下:

    MyReceiver receiver = new MyReceiver();
    registerReceiver(receiver, new IntentFilter("com.codingblock.receive.intent.action.MyReceiver")); 

     

    三、启动一个BroadcastReceiver

      BroadcastReceiver用于接收程序(包括用户开发的程序和程序内建的系统)所发出的Broadcast Intent,启动一个BroadcastReceiver只需两步:

      第一步:创建一个需要启动BroadcastReceiver的Intent。

      第二步:调用Context的sendBroadcast()方法或sendOrderedBroadcast()方法来启动Intent;

      当一个Broadcast Intent被发出后,所有匹配该Intent的Receiver都有可能被启动。 

      当然,对Receiver不同的注册方式,需要用不同的方式去启动,两种注册方式对应的启动方法如下:

      在AndroidManifest.xml中配置的Receiver(2中第一种方法),启动方式如下:

    Intent intent = new Intent(MainActivity.this, MyReceiver.class);
    sendBroadcast(intent);
    

       在代码中动态注册的Receiver(2中第二种方法),启动如下:

    Intent intent = new Intent("com.codingblock.receive.intent.action.MyReceiver");
    sendBroadcast(intent);
    

        

  • 相关阅读:
    Windows 10下CUDA及cuDNN的安装 —— Pytorch
    Centos7 python3环境搭建 兼容python2.7
    VMware中Linux虚拟机与Windows主机共享文件夹
    基于阿里云服务器的网站搭建 新手教程
    CVE-2017-11882 漏洞分析总结 新手漏洞分析详细教程
    Linux基本命令 和 Regex 正则表达式
    Shell 编程 基础用法
    Perl 编程 基础用法
    Python3 网络通信 网络聊天室 文件传输
    Ant Design of Angular
  • 原文地址:https://www.cnblogs.com/codingblock/p/4856213.html
Copyright © 2011-2022 走看看