`
dengzhangtao
  • 浏览: 670302 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android BroadcastReceiver两种注册方式区别

阅读更多
/************ 动态注册 ************/

TextMain.java

package lxy.litsoft; 
 
import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
 
public class TestMain extends Activity { 
     
    BroadcastReceiver bcr;  //声明一个广播接收器  
    Button btSendMessage;   //声明一个按钮  
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
         
        //实例化广播接收器对象  
        bcr = new BroadcastReceiver(){ 
            public void onReceive(Context context, Intent intent) { 
                Log.d("test", "^-^, Have received Massage!"); 
            } 
        }; 
         
        //实例化按键对象并为其添加监听器  
        btSendMessage = (Button)findViewById(R.id.button01); 
        btSendMessage.setOnClickListener(new ButtonListener()); 
    } 
     
    class ButtonListener implements OnClickListener{ 
        public void onClick(View v) { 
            //当点击按钮的时候,就发送广播  
            Intent intent = new Intent(); 
            intent.setAction("ABC"); 
            sendBroadcast(intent); 
        } 
    } 
     
    protected void onStart() { 
        super.onStart(); 
        //注册广播接收器(动态注册)  
        IntentFilter filter = new IntentFilter(); 
        filter.addAction("ABC"); 
        this.registerReceiver(bcr, filter); 
    } 
 
    protected void onStop() { 
        super.onStop(); 
        //取消注册广播接收器  
        this.unregisterReceiver(bcr); 
    }   

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView   
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:text="@string/hello" 
    /> 
<Button 
    android:id="@+id/button01" 
    android:text="SendMessage" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"></Button> 
</LinearLayout> 
/************ 静态注册 ************/

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="lxy.litsoft" 
      android:versionCode="1" 
      android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="8" /> 
 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
        <activity android:name=".TestMain" 
                  android:label="@string/app_name"> 
            <intent-filter> 
                <action android:name="android.intent.action.MAIN" /> 
                <category android:name="android.intent.category.LAUNCHER" /> 
            </intent-filter> 
        </activity> 
 
        <receiver android:name="MyBroadcastReciever"> 
            <intent-filter> 
                <action android:name="ABC"></action> 
            </intent-filter> 
        </receiver> 
         
    </application> 
</manifest> 
TestMain.java

package lxy.litsoft; 
 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
 
public class TestMain extends Activity { 
     
    Button btSendMessage;   //声明一个按钮  
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
 
        btSendMessage = (Button)findViewById(R.id.button01); 
        btSendMessage.setOnClickListener(new ButtonListener()); 
    } 
     
    class ButtonListener implements OnClickListener{ 
        public void onClick(View v) { 
            //当点击按钮的时候,就发送广播  
            Intent intent = new Intent(); 
            intent.setAction("ABC"); 
            sendBroadcast(intent); 
        } 
    } 
  

MyBroadcastReciever.java

package lxy.litsoft; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
 
 
public class MyBroadcastReciever extends BroadcastReceiver{ 
    public void onReceive(Context context, Intent intent) { 
        Log.d("test", "^-^, Have received Massage!"); 
    } 

动态注册和静态注册一个BroadcastReceiver的区别:

动态注册较静态注册灵活。实验证明:当静态注册一个BroadcastReceiver时,不论应用程序是启动与否。都可以接受对应的广播。

动态注册的时候,如果不执行unregisterReceiver();方法取消注册,跟静态是一样的。但是如果执行该方法,当执行过以后,就不能接受广播了。
分享到:
评论
1 楼 a455642158 2012-05-31  
转的……?

相关推荐

    Android中Broadcastreceiver两种注册方式

    android BroadcastReceiver两种注册方式:1.在AndroidManifest.xml中注册 2.在Activity中注册。两种注册BroadcastReceiver方法的比较: 现在我们了解了两种注册BroadcastReceiver的方法之后,需要考虑一下这两种方法...

    Android BroadcastReceiver广播注册方式总结

    BroadcastReceiver的注册方式主要有两种:静态注册和动态注册。 1. 静态注册: 静态注册是在AndroidManifest.xml文件中通过标签来声明BroadcastReceiver的。这种方式的注册使得BroadcastReceiver在应用启动时就会...

    Android中的BroadcastReceiver注册方式研究.pdf

    通过两个实例,我们可以更深入地理解这两种注册方式。例如,一个应用可能需要在每天特定时间提醒用户,这时可以静态注册一个BroadcastReceiver来监听系统的时间变更广播。而在另一个场景中,应用可能需要在用户登录...

    android开发中两种电话拦截方式和两种广播注册方式

    本例中是使用aidl Android Interface Definition Language 实现两种方式拦截来电 使用广播监听拦截(其中有动态广播注册和静态广播注册)和phoneManager类监听手机状态拦截

    深入Android中BroadcastReceiver的两种注册方式(静态和动态)详解

    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式。 BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。在Android系统中,广播体现在...

    Android广播接收者——BroadcastReceiverDemo

    这是一个关于Android中四大组件之一 —— BroadcastReceiver,即广播的一个demo,里面涉及到BroadcastReceiver的两种注册方式,也简单的实现了广播,通过点击按钮发送广播,收到广播后打印日志。

    Android中BroadcastReceiver的定义.pdf

    注册通常包括两部分:声明BroadcastReceiver和定义IntentFilter。 ```xml &lt;receiver android:name=".AlarmReceiver" android:enabled="true"&gt; &lt;action android:name="com.book.action.set_alarm" /&gt; ```...

    Android中BroadcastReceiver的创建与使用步骤.pdf

    BroadcastReceiver分为两种类型:静态注册和动态注册。 1. 静态注册: 静态注册通常在AndroidManifest.xml文件中完成。这样注册的BroadcastReceiver是常驻型的,即使应用程序被关闭,只要系统广播与之匹配,...

    Android期末复习选择题100道

    BroadcastReceiver有两种注册方式,静态注册和动态注册 C. 静态注册需要在Mainfest.xml中配置 D. 动态注册需要在应用退出时候接触广播的注册。 3. 下面关于BroadcastReceiver错误的是( B): A. ...

    Android移动应用开发中BroadcastReceiver单元主要内容.pdf

    本文将详细解析BroadcastReceiver的工作原理、发送与接收广播的过程以及BroadcastReceiver的两种注册方式。 1. BroadcastReceiver简介 BroadcastReceiver,即广播接收者,主要负责监听和处理系统级别的广播事件。在...

    Android提高之BroadcastReceiver实例详解

    BroadcastReceiver有两种注册方式:静态注册和动态注册。 1. 静态注册: 静态注册是在AndroidManifest.xml文件中进行的,通过`&lt;receiver&gt;`标签定义BroadcastReceiver,并在`&lt;intent-filter&gt;`中指定对应的`&lt;action&gt;`...

    Android之Broadcast, BroadcastReceiver(广播)

    android广播实现代码,使用两种方法注册BroadcastReceiver

    android学习笔记2--BroadcastReceiver

    BroadcastReceiver有两种发送广播的方式:有序广播(Ordered Broadcast)和无序广播(Unordered Broadcast)。 **有序广播(Ordered Broadcast)** 有序广播是按照接收者的优先级进行传递的,每个接收者都有机会...

    Android BroadcastReceiver广播机制概述

    BroadcastReceiver的注册有两种方式:静态注册(在AndroidManifest.xml中声明)和动态注册(在代码中实例化并注册)。静态注册的BroadcastReceiver在应用启动时就会被系统加载,即使应用没有运行也能接收到广播;...

    广播接收器-BroadcastReceiver 电池电量显示

    BroadcastReceiver有两种注册方式: 1. **静态注册**:在AndroidManifest.xml文件中声明BroadcastReceiver。这种方式使得BroadcastReceiver在应用启动时就会自动激活,即使应用不在运行状态也能接收到广播。示例...

    Android提高第六篇之BroadcastReceiver.docx

    本文将深入探讨这两种注册方式以及如何获取和处理Intent中的信息。 **一、BroadcastReceiver的注册** 1. **动态注册**: 动态注册通常在Activity或Service的生命周期方法中完成,例如`onCreate()`或`onResume()`。...

    Android广播监听机制的两种实现方法.pdf

    短信监听通常用于安全或信息提醒场景,以下为两种注册方式实现短信监听的简要示例: - 静态注册的短信监听器会在任何时候都能接收到短信广播,即使应用未运行。 - 动态注册的监听器则需要在应用运行时注册,一旦...

    Android100道选择题.doc

    BroadcastReceiver有两种注册方式,静态注册和动态注册 B. BroadcastReceiver必须在AndroidMainfest文件中声明 C. BroadcastReceiver的使用,一定有一方发送广播,有一方监听注册广播,onReceive方法才会被调用 D. ...

Global site tag (gtag.js) - Google Analytics