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







  • 相关阅读:
    block本质探寻五之atuto类型局部实例对象
    block本质探寻四之copy
    block本质探寻三之block类型
    Android Studio使用时遇见的一些问题+解决方法(持续更新)
    Android之练习MVVM+DataBinding框架模式
    解决 Mac Android Studio Gradle Sync 慢的问题
    Android之MVC、MVP、MVVM
    Android之同步与异步
    Android之Fragment
    Android之Fragment栈操作 commit()问题分析
  • 原文地址:https://www.cnblogs.com/sowhat4999/p/4439843.html
Copyright © 2020-2023  润新知