`
dengzhangtao
  • 浏览: 677505 次
  • 性别: 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`的注册有两种方式:静态注册和动态注册。静态注册是在`AndroidManifest.xml`中声明,系统启动时就会创建对应的BroadcastReceiver实例。而动态注册则是在代码中进行,需要在适当的时候调用`...

    Android BroadcastReceiver Demo

    BroadcastReceiver有两种注册方式:静态注册和动态注册。 1. 静态注册:在AndroidManifest.xml文件中声明BroadcastReceiver,这样系统在启动时就会自动注册该Receiver。这种方式简单便捷,但即使应用不在运行,也能...

    Android学习之BroadcastReceiver总结

    BroadcastReceiver有两种注册方式:静态注册和动态注册。 1. 静态注册:在AndroidManifest.xml文件中声明BroadcastReceiver,这样系统在应用程序启动时就会创建并初始化该Receiver,即使应用不在运行状态也能接收...

    Android BroadcastReceiver实例Demo

    注册BroadcastReceiver有两种方式:静态注册和动态注册。静态注册是在AndroidManifest.xml文件中声明,这样系统在启动时就会自动创建BroadcastReceiver对象。动态注册则是在运行时通过代码完成,需要在适当的时候...

    android broadcastReceiver 代码示例

    最后,了解广播的实现方式,有静态注册和动态注册两种。静态注册是在AndroidManifest.xml中声明,应用启动时系统就会加载,即使应用不在运行状态也能接收到广播。动态注册则是在代码中完成,只有在注册后且应用运行...

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

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

    动态注册broadcastreceiver短信接受

    综上所述,动态注册BroadcastReceiver是Android开发中处理特定事件,如短信接收,的一种实用方法。它提供了更细粒度的控制,可以在应用需要时开启,不需要时关闭,有效地管理了应用的资源。通过合理运用,我们可以...

    Android BroadcastReceiver广播注册方式总结

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

    android BroadcastReceiver实验,短信接收

    注册BroadcastReceiver有两种方式:静态注册和动态注册。静态注册是在AndroidManifest.xml文件中声明,应用启动时就会生效;动态注册则在代码中完成,通常在需要时注册,用完后需要手动注销,以节省系统资源。 接...

    Android BroadcastReceiver

    BroadcastReceiver有两种注册方式:静态注册和动态注册。 1. 静态注册:在AndroidManifest.xml中声明BroadcastReceiver,应用启动时就会自动初始化。 2. 动态注册:在代码中创建BroadcastReceiver实例并注册,应用...

    《BroadcastReceiver详解》对应源码

    BroadcastReceiver分为动态注册和静态注册两种方式。动态注册是在代码中通过`registerReceiver()`方法进行,优点是灵活性高,可以随时注册和注销;而静态注册则是在AndroidManifest.xml文件中声明,即使应用不在运行...

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

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

    android demo,BroadcastReceiver源代码的实现。

    BroadcastReceiver通常有两种注册方式:静态注册和动态注册。 1. 静态注册:在AndroidManifest.xml文件中声明BroadcastReceiver,这种方式的Receiver在应用启动时就会自动激活,即使应用被关闭,依然可以接收到指定...

    Android BroadcastReceiver实例Demo(有序广播的发送)

    广播分为两种类型:有序广播(Ordered Broadcast)和无序广播(Unordered Broadcast)。有序广播允许接收者之间按照优先级顺序接收并处理广播,而无序广播则不保证接收者的处理顺序。 接下来,我们将重点讨论有序...

    Android 四大组件之BroadcastReceiver

    BroadcastReceiver分为两种注册方式:静态注册和动态注册。 **静态注册**是在AndroidManifest.xml文件中进行的,这样BroadcastReceiver会在应用程序启动时自动创建并监听指定的广播事件。例如: ```xml &lt;receiver ...

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

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

    android广播的两种注册方式以及区别

    本篇将深入探讨两种广播注册方式:静态注册(Static Registration)和动态注册(Dynamic Registration),以及它们之间的差异。 **静态注册** 静态注册是在AndroidManifest.xml文件中通过标签定义广播接收器。这种...

Global site tag (gtag.js) - Google Analytics