zoukankan      html  css  js  c++  java
  • 初学Android,BroadcastReceiver之发送接收广播

    BroadcastReceiver用于监听系统全局广播消息,由于BroadcastReceiver是一种全局的监听器,因此它可以非常方便地实现系统中不同组件之间通信

    启动它需要两步

    1.创建需要启动的BroadcastReceiver的Intent

    2.调用Context的SendBroadcast或sendOrederedBroadcast方法来启动指定的BroadcastReceiver

    这其中关键是创建Intent时,要setAction("xxx"),而BroadcastReceiver就要创建它的filter,或在代码中指定,或在xml中指定

    下面以一个简单例子说明,例子是一个向广播发送消息的程序

    发送端主界面代码

    1. package WangLi.Service.Broadcast;  
    2.   
    3. import android.app.Activity;  
    4. import android.content.Intent;  
    5. import android.os.Bundle;  
    6. import android.view.View;  
    7. import android.view.View.OnClickListener;  
    8. import android.widget.Button;  
    9.   
    10. public class Broadcast extends Activity {  
    11.     Button send;  
    12.   
    13.     @Override  
    14.     public void onCreate(Bundle savedInstanceState) {  
    15.         super.onCreate(savedInstanceState);  
    16.         setContentView(R.layout.main);  
    17.         // 获取界面中的按钮  
    18.         send = (Button) findViewById(R.id.send);  
    19.         send.setOnClickListener(new OnClickListener() {  
    20.             @Override  
    21.             public void onClick(View arg0) {  
    22.                 // 创建Intent对象  
    23.                 Intent intent = new Intent();  
    24.                 // 设置Intent的Action属性  
    25.                 intent.setAction("WangLi.Test");  
    26.                 intent.putExtra("msg", "简单的消息");  
    27.                 //发送广播  
    28.                 sendBroadcast(intent);  
    29.             }  
    30.         });  
    31.     }  
    32. }  

    接着创建一个BroadcastReceiver监听器

    1. package WangLi.Service.Broadcast;  
    2.   
    3. import android.content.BroadcastReceiver;  
    4. import android.content.Context;  
    5. import android.content.Intent;  
    6. import android.widget.Toast;  
    7.   
    8. public class MyReceiver extends BroadcastReceiver {  
    9.   
    10.     @Override  
    11.     public void onReceive(Context context, Intent intent) {  
    12.         Toast.makeText(  
    13.                 context,  
    14.                 "接收到的Intent的Action为:" + intent.getAction() + " 消息内容是:"  
    15.                         + intent.getStringExtra("msg"), 5000).show();  
    16.     }  
    17.   

    向AndroidManifest.xml中配置该receiver,主要是intent filter

    1. <receiver android:name="MyReceiver" >  
    2.     <intent-filter>  
    3.         <action android:name="WangLi.Test" />  
    4.     </intent-filter>  
    5. </receiver>  

    要注意的是BroadcastReceiver的过期时间为10秒,如果是耗时的操作应放在service中去完成,BroadcastReceiver只适合短时间的计算任务,因为它的生命周期非常短

  • 相关阅读:
    设计模式之工厂模式-抽象工厂(02)
    1036 跟奥巴马一起编程 (15 分)
    1034 有理数四则运算 (20 分)
    1033 旧键盘打字 (20 分)
    1031 查验身份证 (15 分)
    大学排名定向爬虫
    1030 完美数列 (25 分)二分
    1029 旧键盘 (20 分)
    1028 人口普查 (20 分)
    1026 程序运行时间 (15 分)四舍五入
  • 原文地址:https://www.cnblogs.com/manmanlu/p/4331720.html
Copyright © 2011-2022 走看看