美文网首页
广播学习

广播学习

作者: Crane_FeiE | 来源:发表于2018-09-11 07:59 被阅读0次

广播的类型

  • 标准广播(Normal Broadcasts)--- 异步执行的广播,所有接收器几乎同时收到,效率较高但无法截断
  • 有序广播(Ordered Broadcasts)--- 同步执行的广播,接收器一个个地接到广播,一个接收器的逻辑执行完后才会传到下一个接收器,过程可截断

注册广播接收器

1.动态注册----在代码中注册接收器,仅当应用启动时可以收到广播

Sample Code


public class ReceiverTestActivity extends AppCompatActivity {
    private NetworkChangeReceiver mReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_receiver_test);
        initReceiver();
    }

    private void initReceiver() {
        IntentFilter filter = new IntentFilter();
        filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        mReceiver = new NetworkChangeReceiver();
        registerReceiver(mReceiver, filter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(mReceiver != null){
            unregisterReceiver(mReceiver);
        }
    }

    class NetworkChangeReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            //TODO
        }
    }

    public static Intent formatIntent(Context originActivity){
        return new Intent(originActivity, ReceiverTestActivity.class);
    }
}

2.静态注册---- 在Manifest中注册,可以在不运行的时候也接到广播,并处理相应逻辑

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!--exported = "true": Broadcasts outside this app can deliver to this receiver-->
        <receiver android:name=".BootReceiver"
            android:enabled="true"
            android:exported="true"> 
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
    </application>

发送自定义广播

Sample Code

1. 发送标准广播

    //you should register a custom broadcast receiver in order to handle this broadcast
    private void emmitCustomBroadcast(){
        // String param is your custom intent action
        Intent intent = new Intent("com.example.crane.myfirstline.action.custom_broadcast");
        sendBroadcast(intent);
    }

2.发送有序广播

    //you should register a custom broadcast receiver in order to handle this broadcast
    private void emmitOrderedCustomBroadcast(){
        // String param is your custom intent action, 
        Intent intent = new Intent("com.example.crane.myfirstline.action.custom_broadcast");
        
        //String param is your permission set for this broadcast, it's nullable
        sendOrderedBroadcast(intent, null);
    }

3.阻断有序广播

在广播接收器中onReceive()方法中逻辑末尾添加abortBroadcast()方法

4.使用本地广播

本地广播可以保证该广播只在应用内被接收,防止外部利用广播侵入应用;
使用LocalBroadcastManager的实例中的sendBroadcast(Intent intent)方法
Sample Code

    private void emmitLocalBroadcast() {
        //get Instance of LocalBroadcastManager
        LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
        Intent intent = new Intent("com.example.crane.myfirstline.action.local_broadcast");
        localBroadcastManager.sendBroadcast(intent);
    }

作业

利用广播实现强制下线功能

相关文章

  • 广播学习

    广播的类型 标准广播(Normal Broadcasts)--- 异步执行的广播,所有接收器几乎同时收到,效率较高...

  • CC2640大广播,阿国

    1:学习LongRange广播包知识,然后结合ti的代码,在代码修改longrang广播,且可以广播出来 , 2:...

  • Android之广播机制学习笔记

    Android之广播机制的学习方法 什么是广播机制一提到广播我们第一感觉就会联想到小时候村里面的广播,安卓的广播机...

  • Android广播的学习

    Android的第三大组件: 广播好吧我承认我们的项目从来没用过 , 但是耐不住性子就自己折腾了一下 需求: 某款...

  • Android学习笔记——广播

    主要用于个人复习(基于第一行代码) 广播的类型 标准广播:一种完全异步执行的广播,在广播发出之后,所有的Broad...

  • 广播相关学习-sendBroadcast

    前言 前面已经介绍过动态注册广播接收者的逻辑,静态注册广播接收者的注册写在manifest中,就不介绍了,下面介绍...

  • 广播相关学习-registerReceiver

    广播主要分为两部分:广播发送者和广播接收者 广播接收者:分为静态注册和动态注册 静态注册:AndroidManif...

  • 安卓开发

    今天学习了全局大喇叭,了解到了广播机制,还有广播的发送。今天学习的东西很抽象,所以理解起来比较难

  • 四、子网划分

    个人学习笔记,若有侵权,请告知! 目录 子网划分的好处 减少网络流量:路由器增加广播域,广播域越多,每个广播域就越...

  • 团委组织广播站前往济南广播电台学习交流

    团委组织广播站前往济南广播电台学习交流 3月27日中午,我院广播站一行12人在团委副书记杨蕾带领下前往济南广播...

网友评论

      本文标题:广播学习

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