无序广播形象解释:只要我按时发出去,收不收随你。
新建一个app用于发送广播:
public void click(View v) { Intent intent = new Intent(); intent.setAction("org.dreamtech.custom"); intent.putExtra("name", "无序广播"); sendBroadcast(intent); }
再新建一个app用于接收广播:
package org.dreamtech.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class ReceiveReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String content = intent.getStringExtra("name"); Toast.makeText(context, content, Toast.LENGTH_LONG).show(); } }
第二个app注意配置:
<receiver android:name="org.dreamtech.receiver.ReceiveReceiver"> <intent-filter > <action android:name="org.dreamtech.custom"/> </intent-filter> </receiver>
部署两个app:
打开第一个app点击发送,就会弹出一句话:“无序广播”
有序广播形象解释:一个大公司总经理做出一个决定,分发到下部各个部门经理,他们在处理后交代给手下员工
新建一个app发送有序广播:
public void click(View v) { Intent intent = new Intent(); intent.setAction("org.dreamtech.send"); sendOrderedBroadcast(intent, null, new FinalReceiver(), null, 1, "有序广播", null); }
package org.dreamtech.demo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class FinalReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String content = getResultData(); Toast.makeText(context, "广播最终结果" + content, Toast.LENGTH_LONG).show(); } }
新建一个app接收:
四级接收:
package org.dreamtech.demo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class FirstReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String content = getResultData(); Toast.makeText(context, "第一级" + content, Toast.LENGTH_LONG).show(); setResultData("已经过第一级处理"); } }
package org.dreamtech.demo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class SecondReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String content = getResultData(); Toast.makeText(context, "第二级" + content, Toast.LENGTH_LONG).show(); setResultData("已经过第二级处理"); } }
package org.dreamtech.demo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class ThirdReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String content = getResultData(); Toast.makeText(context, "第三级" + content, Toast.LENGTH_LONG).show(); setResultData("已经过第三级处理"); //终止 //abortBroadcast(); } }
package org.dreamtech.demo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class FourthReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String content = getResultData(); Toast.makeText(context, "第四级" + content, Toast.LENGTH_LONG).show(); } }
注意配置:
<receiver android:name="org.dreamtech.demo.FirstReceiver" > <intent-filter android:priority="1000" > <action android:name="org.dreamtech.send" /> </intent-filter> </receiver> <receiver android:name="org.dreamtech.demo.SecondReceiver" > <intent-filter android:priority="500" > <action android:name="org.dreamtech.send" /> </intent-filter> </receiver> <receiver android:name="org.dreamtech.demo.ThirdReceiver" > <intent-filter android:priority="100" > <action android:name="org.dreamtech.send" /> </intent-filter> </receiver> <receiver android:name="org.dreamtech.demo.FourthReceiver" > <intent-filter android:priority="50" > <action android:name="org.dreamtech.send" /> </intent-filter> </receiver>