10天学通Android开发(3-1)-组件广播接收器BroadcastReceive

广播接收器,它和事件处理机制类似,只不过事件的处理机制是程序组件级别的,而广播处理机制是系统级别的。

创新互联专业为企业提供从江网站建设、从江做网站、从江网站设计、从江网站制作等企业网站建设、网页设计与制作、从江企业网站模板建站服务,十余年从江做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

BroadcastReceiver如操作系统启动完毕,发出广播信号;低电量提示广播,应用中耗电量大的部分功能关闭;侦听短信;

用于接收并处理广播通知(broadcastannouncements)。多数的广播是系统发起的,如地域变换、电量不足、来电来信等。程序也可以播放一个广播。程序可以有任意数量的 broadcast receivers来响应它觉得重要的通知。broadcast receiver可以通过多种方式通知用户:启动activity、使用NotificationManager、开启背景灯、振动设备、播放声音等,最典型的是在状态栏显示一个图标,这样用户就可以点它打开看通知内容。

通常我们的某个应用或系统本身在某些事件(电池电量不足、来电来短信)来临时会广播一个Intent出去,我们可以利用注册一个Broadcast Receiver来监听到这些Intent并获取Intent中的数据。

 

使用场合:通信过程传递过来的数据量不大,频度也不高

主要功能

  1. 事件的广播比价简单,构建Intent对象,调用sendBroadcast()方法将广播发出

  2. 直接定义事件接收器进行接收,重写onReceiver

  3. 注册\注销Receiver ,registerReceiver(r,filter),       unregisterReceiver(r);

     

 

 

案例:

  1. 创建新工程

  2. 新建一个广播接收器,类: MyBroadcast扩展自BroadcastReceiver,一旦收到消息,会执行抽象方法onReceive,如下:

 

 

publicvoid onReceive(Context arg0, Intent arg1) {

     //TODO Auto-generatedmethod stub

         System.out.println("我收到了你的信息:"+arg1.getStringExtra("MyTxt"));

   }

 

3) AndroidManifest.xml,注册广播接收器,类: MyBroadcast。

4)MainActivity加进一按钮,发送消息

       android:id="@+id/butSendBroad"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_alignLeft="@+id/textView1"

       android:layout_below="@+id/textView1"

       android:layout_marginTop="29dp"

        android:text="SendBroad" />

5)实现发送

butSendBroad.setOnClickListener(new View.OnClickListener() {

         

         @Override

         publicvoid onClick(View v) {

 

             Intent i=newIntent(MainActivity.this,MyBroadcast.class);

            

             i.putExtra("MyTxt","HelloBroad");

            

             sendBroadcast(i);

            

          }

        }

       );

6)可先运行,logcat可看到消息

 

7)动态的注册和注销广播接受器, AndroidManifest中去除广播接收器类的注册

 

8)MainActivity中,添加注册和注销两按钮

       android:id="@+id/btnReg"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_alignLeft="@+id/butSendBroad"

       android:layout_below="@+id/butSendBroad"

       android:layout_marginTop="45dp"

       android:text="Regist"/>

 

   

       android:id="@+id/btnUnReg"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_alignLeft="@+id/btnReg"

       android:layout_centerVertical="true"

        android:text="Unreg" />

9) MyBroadcast指定一地址变量:

 

public static final String ACTION="10-1.intenet.action.mybroad";

 

10)定义MyBroadcast实例

 

private final MyBroadcast MyBRecive=newMyBroadcast();

 

11)实现注册

btnReg.setOnClickListener(newView.OnClickListener() {

         

         @Override

         publicvoid onClick(View v) {

            //TODO Auto-generatedmethod stub

             registerReceiver(MyBRecive,new IntentFilter(MyBroadcast.ACTION));

            

            

          }

      });

 

12)取消注册

btnUnReg.setOnClickListener(new View.OnClickListener() {

         

         @Override

         publicvoid onClick(View v) {

            //TODO Auto-generatedmethod stub

             unregisterReceiver(MyBRecive);

            

            

          }

      });

13)发送广播更改:

butSendBroad.setOnClickListener(new View.OnClickListener() {

         

         @Override

         publicvoid onClick(View v) {

 

            //Intent i=newIntent(MainActivity.this,MyBroadcast.class);

              Intent i=newIntent(MyBroadcast.ACTION);

            

             i.putExtra("MyTxt","HelloBroad");

            

             sendBroadcast(i);

            

          }

        }

       );

 

参考:

http://www.cnblogs.com/linzheng/archive/2011/01/22/1942053.html

 

×××:

http://down.51cto.com/data/1964492


名称栏目:10天学通Android开发(3-1)-组件广播接收器BroadcastReceive
网站链接:http://pwwzsj.com/article/pooedh.html