美文网首页
BroadcastReceiver

BroadcastReceiver

作者: woochen123 | 来源:发表于2017-11-29 14:29 被阅读0次

    1.分类

    • 普通广播
      范围:整个系统
    • 系统广播
      范围:整个系统
    • 有序广播
      范围:整个系统
    • 本地广播(Local Broadcast)
      背景
      Android中的广播可以跨App直接通信(exported对于有intent-filter情况下默认值为true)
      范围:当前app
    //注册应用内广播接收器
    //步骤1:实例化BroadcastReceiver子类 & IntentFilter mBroadcastReceiver 
    mBroadcastReceiver = new BroadcastReceiver(); 
    IntentFilter intentFilter = new IntentFilter(); 
    
    //步骤2:实例化LocalBroadcastManager的实例
    localBroadcastManager = LocalBroadcastManager.getInstance(this);
    
    //步骤3:设置接收广播的类型 
    intentFilter.addAction(android.net.conn.CONNECTIVITY_CHANGE);
    
    //步骤4:调用LocalBroadcastManager单一实例的registerReceiver()方法进行动态注册 
    localBroadcastManager.registerReceiver(mBroadcastReceiver, intentFilter);
    
    //取消注册应用内广播接收器
    localBroadcastManager.unregisterReceiver(mBroadcastReceiver);
    
    //发送应用内广播
    Intent intent = new Intent();
    intent.setAction(BROADCAST_ACTION);
    localBroadcastManager.sendBroadcast(intent);
    

    2.注册方式

    • 静态注册
    <receiver android:name=".MyReceiver">  
                <intent-filter>  
                    <action android:name="android.intent.action.MY_BROADCAST"/>  
                    <category android:name="android.intent.category.DEFAULT" />  
                </intent-filter>  
     </receiver>  
    
    • 动态注册
    MyReceiver receiver = new MyReceiver();  
    IntentFilter filter = new IntentFilter();  
    filter.addAction("android.intent.action.MY_BROADCAST");  
    registerReceiver(receiver, filter);  
    
    unregisterReceiver(receiver);  
    

    相关文章

      网友评论

          本文标题:BroadcastReceiver

          本文链接:https://www.haomeiwen.com/subject/edbubxtx.html