zoukankan      html  css  js  c++  java
  • BroadCast广播机制应用与实例

    如何编写广播接收器

    第一步:需要继承BroadcastReceiver类,覆写其中的onReceive()方法.

    class MyBroadcastReceiver extends BroadcastReceiver {  
         //接收到广播会被自动调用    
        @Override  
        public void onReceive (Context context, Intent intent) {  
            //从Intent中获取action  
            …your code here…  
        }  
    }  

    第二步:定义好广播接收器还不行,必须向系统注册以便让其知道该接收器可以处理哪些广播事件。
    常见方式是采用静态注册,修改MENIFEST.xml文件, 在<application></application>中加入receiver标签.
    application>  
        <activity name=""/>  
        <receiver android:name=".MyBroadcastReceiver">  
            <!-- intent过滤器,指定可以匹配哪些intent, 一般需要定义action 可以是自定义的也可是系统的 -->   
            <intent-filter>  
                <action android:name="com.app.bc.test"/>  
            </intent-filter>  
        </receiver>  
    </application>

    第三步:此时我们可以发送一个广播事件出去,代码如下:

    Intent intent = new Intent(“com.app.bc.test”);  
    sendBroadcast(intent);//发送广播事件  

    动态注册广播接收器
    在某个Activity中,我们可以用代码来实现动态注册:
    //生成一个BroadcastReceiver对象  
    SMSReceiver  smsReceiver = new SMSReceiver();  
    //生成一个IntentFilter对象  
    IntentFilter filter = new IntentFilter();         
    filter.addAction(“android.provider.Telephony.SMS_RECEIVED”);  
    //将BroadcastReceiver对象注册到系统当中  
    //此处表示该接收器会处理短信事件  
    TestBC1Activity.this.registerReceiver(smsReceiver, filter);   
    静态注册和动态注册的区别
    1)静态注册:在AndroidManifest.xml注册,android不能自动销毁广播接收器,也就是说当应用程序关闭后,还是会接收广播。
    2)动态注册:在代码中通过registerReceiver()手工注册.当程序关闭时,该接收器也会随之销毁。当然,也可手工调用unregisterReceiver()进行销毁。
    操作小结
    静态注册的步骤:
    定义广播接收器,继承BroadcastReceiver类,覆写onReceive函数.
    在xml文件中注册监听器,定义Intent-Filter中感兴趣的action操作.
    使用sendBroadCast向系统发送对其感兴趣的广播接收器中.
    动态注册的步骤:
    SMSReceiver  smsReceiver = new SMSReceiver();  
    IntentFilter filter = new IntentFilter();         
    filter.addAction(“android.provider.Telephony.SMS_RECEIVED”);  
    TestBC1Activity.this.registerReceiver(smsReceiver, filter); 







  • 相关阅读:
    贪婪算法、递归计算、动态规划背包问题
    递归、动态规划计算斐波那契数列
    用于确定两个字符串最长公共子串的函数
    快速排序算法
    顺序、二分查找文本数据
    MyBatis面试题
    Spring面试题
    SpringMvc面试题
    jsp和servlet面试
    EJB的理解
  • 原文地址:https://www.cnblogs.com/sowhat4999/p/4439843.html
Copyright © 2011-2022 走看看