`

浅谈BroadcastReceiver的用法

 
阅读更多

  最近看了下关于广播方面的东西,加深了理解,也纠正了自己以前的不正确的看法。

  关于广播有2中注册方式,一种是在代码中注册,也叫动态注册,另一种是在AndroidManifest里面注册,也叫静态注册。

  不管在哪个里面注册,都需要发送广播sendBroadcast()。广播发送的是一个Intent,intent里面一般是action。

  如果是在代码里面注册,一般在onResume()方法里面注册。

@Override
     protected void onResume() {
         // TODO Auto-generated method stub
          
         myReceiver = new MyReceiver();
         IntentFilter filter = new IntentFilter();
         //向过滤器中添加action
          filter.addAction("com.android.shang");
         //注册广播
          registerReceiver(myReceiver, filter);
         
         Intent intent = new Intent();
         intent.setAction("com.android.xiang");
         //发送广播
          sendBroadcast(intent);
         super.onResume();
     }

 

在onPause()方法里面要取消注册。

@Override
     protected void onPause() {
         // TODO Auto-generated method stub
         unregisterReceiver(myReceiver);
         super.onPause();
     }

 

当然,也可以在xml文件中注册:

<receiver
         android:name=".MyBrocastReceiverTest">
         <intent-filter>
             <action    android:name="com.android.xiang"></action>
         </intent-filter>
     </receiver>

 

  如果发送的广播的action已经注册了,那么在onReceive()方法中就会接收到发过来的广播,继而做出一些处理。

  你可以写出一个内部类:

class MyReceiver extends BroadcastReceiver {
 
         @Override
         public void onReceive(Context context, Intent intent) {
             // TODO Auto-generated method stub
             //从这里的log中可以看到是否接受到了广播
             System.out.println("intent = " + intent);
         }
         
     }

 

 当然也可以单独写一个类:

package com.android.TestBrocastReceiver;

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

public class MyBrocastReceiverTest extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        System.out.println("intent = " + intent);
    }

}

 

  一般如果在代码里面注册,就把广播写在代码里面,在xml文件中注册就单独写一个类。

  注册在代码里面:

package com.android.TestBrocastReceiver;
 
 import android.app.Activity;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
 
 public class TestBrocastReceiver extends Activity {
     
     MyReceiver myReceiver;
     
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
     }
 
     @Override
     protected void onPause() {
         // TODO Auto-generated method stub
         unregisterReceiver(myReceiver);
         super.onPause();
     }
 
     @Override
     protected void onResume() {
         // TODO Auto-generated method stub
         
         myReceiver = new MyReceiver();
         IntentFilter filter = new IntentFilter();
         //向过滤器中添加action
         filter.addAction("com.android.shang");
         //注册广播
         registerReceiver(myReceiver, filter);
         
         Intent intent = new Intent();
         intent.setAction("com.android.xiang");
         //发送广播
         sendBroadcast(intent);
         super.onResume();
     }
     
     class MyReceiver extends BroadcastReceiver {
 
         @Override
         public void onReceive(Context context, Intent intent) {
             // TODO Auto-generated method stub
             //从这里的log中可以看到是否接受到了广播
             System.out.println("intent = " + intent);
         }
     }
 }

 

 

注册在xml文件中:

在xml文件中注册,写上一个广播类,然后在activity中发送广播就可以了。

有时系统会发出一些广播,比如说时间的变化等,时间走一秒就会发一个广播,这时我们可以监听这个广播,然后在接收器中做处理就可以了,而不需要在发广播了。

1
0
分享到:
评论
1 楼 warnerhit 2011-12-22  
filter.addAction("com.android.shang");
intent.setAction("com.android.xiang"); 
很重要的两句没解释

相关推荐

    BroadCastReceiver用法介绍

    该文章清晰的说明了BroadCastReceiver的用法及其方法如何发送以及接收广播

    BroadcastReceiver使用demo

    在这个"BroadcastReceiver使用demo"中,我们将深入探讨BroadcastReceiver的工作原理、如何创建与注册、以及如何发送和接收广播。以下是对BroadcastReceiver的详细说明: 一、BroadcastReceiver概述 ...

    BroadcastReceiver

    BroadcastReceiver的主要生命周期包括`onReceive()`方法,当BroadcastReceiver接收到广播时,系统会调用这个方法。开发者需要在这个方法中实现对广播的处理逻辑,注意此方法执行时间应尽可能短,因为过长的执行可能...

    android BroadcastReceiver相关测试代码

    本测试代码着重展示了BroadcastReceiver的工作原理和使用方法。 在`Lesson_22_code.zip`和`Lesson_21_code.zip`这两个压缩包中,可能包含以下关键知识点: 1. **BroadcastReceiver注册**: - 静态注册:在...

    broadcastReceiver

    - **无序广播**:使用`sendBroadcast()`方法发送,特点是广播消息会被所有符合条件的接收者接收,但接收顺序不确定,且无法被拦截。 - **有序广播**:使用`sendOrderedBroadcast()`方法发送,可以设定接收顺序并...

    BroadCastReceiver

    为了优化性能和用户体验,应合理使用`BroadcastReceiver`,避免在不必要的时候持续监听广播,因为这会消耗电池和系统资源。同时,针对Android系统版本的变化,如Android Oreo及以上版本对后台服务和广播的限制,可能...

    BroadcastReceiver的生命周期

    综上所述,BroadcastReceiver在Android开发中扮演着重要角色,它的生命周期管理和正确使用是确保应用能及时、有效地响应广播的关键。同时,理解源码可以帮助我们更好地定制和优化BroadcastReceiver的行为。

    BroadcastReceiverDemo

    总结来说,"BroadcastReceiverDemo"是一个关于如何利用BroadcastReceiver监听电池电量变化的实例,通过接口实现BroadcastReceiver与应用程序其他部分的数据交换,展示了Android系统事件监听的基本用法。这个示例对于...

    BroadcastReceiver学习(01)

    在这个"BroadcastReceiver学习(01)"中,我们将深入探讨BroadcastReceiver的基本概念、注册方式以及如何创建和使用。 ### 一、BroadcastReceiver基本概念 BroadcastReceiver是一种服务组件,它能够接收并响应系统...

    Android \BroadCastReceiver 简介

    3. `onReceive()` 方法结束后,`BroadcastReceiver` 对象会被释放,除非你创建了长时间运行的任务,如启动 `Service` 或使用 `Handler` 延迟操作。记住,不要在 `onReceive()` 中执行耗时操作,否则可能导致 ANR...

    BroadcastReceiver使用Demo

    总之,BroadcastReceiver是Android开发中的关键组件,通过合理使用不同类型的注册、广播类型,可以实现应用间的通信、监听系统事件等多种功能。在实际开发中,开发者应根据需求选择合适的注册方式和广播类型,以提高...

    Android BroadcastReceiver

    本教程将深入讲解Android BroadcastReceiver的基础知识,以及如何在实际应用中使用。 一、BroadcastReceiver基本概念 BroadcastReceiver允许应用程序接收并处理系统或自定义广播事件。系统广播是由Android系统发出...

    Android学习之BroadcastReceiver总结

    BroadcastReceiver在Android系统中充当一个监听器,当接收到匹配的Intent广播时,会调用其定义的onReceive()方法。BroadcastReceiver有两种注册方式:静态注册和动态注册。 1. 静态注册:在AndroidManifest.xml文件...

    《BroadcastReceiver详解》对应源码

    1. **BroadcastReceiver的生命周期**:BroadcastReceiver的生命周期非常短暂,主要包含`onReceive()`方法。当接收到广播时,系统会创建BroadcastReceiver实例并调用该方法。因此,所有的处理逻辑都应该在这个方法中...

    Android的BroadcastReceiver简单示例

    本示例将详细介绍如何创建和使用一个简单的BroadcastReceiver。 首先,我们需要创建BroadcastReceiver的子类。在Android Studio中,新建一个Java类,如`MyBroadcastReceiver`,并继承自BroadcastReceiver: ```...

    BroadcastReceiver介绍

    ### BroadcastReceiver详细介绍 #### 一、概述 在Android开发中,`BroadcastReceiver`是四大组件之一,主要用于接收并处理系统或应用程序发出的广播...掌握其基本原理和使用方法,有助于提升应用的功能性和用户体验。

    BroadcastReceiver通过接口回调更新界面

    这个接口定义了当BroadcastReceiver接收到特定广播时需要调用的方法,例如`onBroadcastReceived()`。BroadcastReceiver在接收到广播后,会调用这个接口的方法,而不是直接修改UI。Activity实现这个接口,并在适当的...

    android demo,BroadcastReceiver源代码的实现。

    这个"android demo,BroadcastReceiver源代码的实现"是一个示例,旨在帮助开发者理解如何在实际应用中使用BroadcastReceiver。 BroadcastReceiver的工作原理是基于Android的事件驱动模型。当系统或应用发送一个广播...

Global site tag (gtag.js) - Google Analytics