本次案例介绍的是有序广播,有序广播是在广播发出之后,广播接收器会按照顺序接受广播消息,不能同时接受,相对于无序广播来说,无序广播是异步执行,效率高,但是无法拦截,有序广播虽然没有无序广播的效率高,但是可以拦截,实用效果大于无序广播。
下面是本次案例的代码:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.bz0209.bryouxu.MainActivity" android:background="@drawable/stitch_one"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送有序广播" android:textSize="18sp" android:layout_centerHorizontal="true" android:layout_marginTop="80dp" android:background="#FBFBFF" android:paddingLeft="5dp" android:paddingRight="5dp" android:onClick="send"/> </RelativeLayout> MainActivity:
package com.example.bz0209.bryouxu; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void send(View view){ Intent intent=new Intent(); intent.setAction("Intercept_stitch"); sendOrderedBroadcast(intent,null); } } MyBroadcastReceiverOne
package com.example.bz0209.bryouxu; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; /** * Created by Administrator on 2017/6/5. */ public class MyBroadcastReceiverOne extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("MyBroadcastReceiverOne","自定义的广播接受者One,接受到广播事件"); } } MyBroadcastReceiverTwo
package com.example.bz0209.bryouxu; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; /** * Created by Administrator on 2017/6/5. */ public class MyBroadcastReceiverTwo extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("MyBroadcastReceivertwo","自定义的广播接受者two,接受到广播事件"); } } MyBroadcastReceiverThree
package com.example.bz0209.bryouxu; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; /** * Created by Administrator on 2017/6/5. */ public class MyBroadcastReceiverThree extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("MyBroadcastReceiverThree","自定义的广播接受者Therr,接受到广播事件"); } } 下面是效果图
运行之后会在控制台打印出广播接收者的顺序。