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); 







  • 相关阅读:
    Delphi cxGrid –--> RecordIndex out of Range
    局域网共享需要密码
    提高AdoQuery的速度
    string literals may have at most 255 elements
    delphi控件属性大全-详解-简介
    Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值
    FastReport 使用说明
    delphi的取整函数round、trunc、ceil和floor
    cxGrid 速度
    SQL Server 无法在服务器上访问指定的路径或文件解决方法
  • 原文地址:https://www.cnblogs.com/sowhat4999/p/4439843.html
Copyright © 2011-2022 走看看