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







  • 相关阅读:
    25个完美的Opencart模板,让顾客无法抗拒!
    来自极客标签10款最新设计素材-系列十
    Creating Contextual Menus创建上下文菜单
    java解惑之常常忘记的事
    java 泛型实例详解(普通泛型、 通配符、 泛型接口)
    Java 泛型、通配符? 解惑
    Java中public,private,protected,和默认的区别
    windows 环境下dos 命令符下进D盘(非c盘系统盘)根目录
    I/O流之--转换流:InputStreamReader 和InputStreamWriter
    java 代码执行cmd 返回值异常 (关于JAVA Project.waitfor()返回值是1)
  • 原文地址:https://www.cnblogs.com/sowhat4999/p/4439843.html
Copyright © 2020-2023  润新知