Android开发入门——Android的广播机制

1、  当产生一个事件时,比如来了一个电话,android就会把该事件广播给所有的广播监

听器,相应的监听器就会进行处理

图示:

 

而我们要做的就是实现相应的广播接听器BroadcastReveicer

            

2、  首先继承BroadcastReceiver类

//接收者的生命周期 :这个对象比较特殊,每次接收广播都要重新创建对象,一旦接收广播后,执行onReceive后,立刻被销毁,不应该说销毁,应该说立刻被垃圾回收器自动回收,因为Java没有销毁的功能。

public class TestReceiver extends BroadcastReceiver{

                  public TestReceiver(){//构造函数

                    System.out.println("TestReceiver");

       }

                  @Override   //要执行的操作

                  public void onReceive(Context context, Intent intent) {

                       System.out.println("onReceive");

                  }

}

当android广播一个广播之后,BroadcastReveicer进行接收,然后调用onReceive ()进行操作

      

3、  要想接收android的广播,必须对监听器进行注册,在AndroidManifest中注册,如下:

       <receiver android:name=".TestReceiver">

           <intent-filter>

              <action android:name="android.intent.action.EDIT" />

           </intent-filter>

       </receiver>

<intent-filter>是过滤器,决定了这个监听器要接收那个事件,其中name会和

Intent进行匹对

 

4、 如何进行广播的发送,

这时需要使用intent对象

 

Intent intent = new Intent();

           intent.setAction(Intent.ACTION_EDIT);   //说明动作

TestActivity.this.sendBroadcast(intent);//该函数用于发送广播

 

其中,Intent.ACTION_EDIT AndroidManifest中的<intent-filter>的

Action name进行匹对,确定该接收器会不会对发来的广播感兴趣

 

 上面方法文章在AndroidManifest中进行注册时,当该应用程序关闭时,该监听器依然处于活动状态,这适合于监听电池等功能,但是对于其他的可能产生麻烦,为了避免弊端,可以在程序中注册广播接收器。

在android广播中对BroadcastReceiver的注册分两种方法,

1.在androidmaniffest.xml中用标签注册。

2.用代码注册区别是前者注册后,即使应用程序结束,BroadcastReceiver仍然能接受到广播。后者程序结束就不会再接收。

  注册BroadcastRecevier:registerReceiver(recevier, filter);

 取消注册BroadcastRecevier:unregisterRecevier(Recevier);

如果一个BroadcastRecevier用于更新UI 那么通常会使用这种方法进行注册,在Activity启动的时候注册BroadcastRecevier,在Activity不可见以后取消注册.

其中filter是一个过滤器,它的动作名会和intentaction进行匹对.

下面就注册短信接听器的实例展示断码:


    

 如果短信监听器接收到短信的事件,那么如何获取内容,如下:

    

posted @ 2011-03-28 17:39  EileenLiu  阅读(1057)  评论(0编辑  收藏  举报