android 广播

来源:互联网 发布:unity moba类手游源码 编辑:程序博客网 时间:2024/05/16 16:05

由于昨天有人问我广播的问题,当时我也有点忘记了,特地来写篇博客记录一下。

发送广播:
一、标准广播

在广播发送出去后,所有的广播接收器都能同时接收这条广播。

        Intent intent = new Intent("com.example.android_broadcast");        sendBroadcast(intent);

二、有序广播:

在广播发送出去后,只有一个广播接收器能先接收这条广播,当这个广播接收器处理完成后,广播才继续发送出去,如此继续下去。

Intent intent = new Intent("com.example.android_broadcast");sendOrderedBroadcast(intent, null);// sendOrderedBroadcast()方法接收两个参数,第一个参数仍然是Intent,第二个参数是一个与权限相关的字符串,这里传入null就行了。

接收广播:

接收广播的时候,我们必须注册才能接收广播,我们可以在代码里注册(动态接收)也可以在 AndroidManifest.xml 中注册(静态接收)。

代码里注册(动态接收):这种注册的接收必须在程序启动后才能接收广播,而且这种注册可以灵活控制注册与注销。

AndroidManifest.xml 中注册(静态接收):这种注册的接收可以在程序不启动的情况下接收广播。

一、动态接收:

新建一个Mybroadcastreceiver类继承BroadcastReceiver,当Mybroadcastreceiver接收到相对应的广播时, onReceive()方法就会得到执行。

package com.example.android_broadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class Mybroadcastreceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stub// 处理相关逻辑}}


package com.example.android_broadcast;import android.app.Activity;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;public class MainActivity extends Activity {private Mybroadcastreceiver mybroadcastreceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//创建intentFilter实例并添加actionIntentFilter intentFilter = new IntentFilter();intentFilter.addAction("com.example.android_broadcast");//创建Mybroadcastreceiver实例mybroadcastreceiver = new Mybroadcastreceiver();//调用 registerReceiver()方法进行注册,使得mybroadcastreceiver接收"com.example.android_broadcast"广播registerReceiver(mybroadcastreceiver, intentFilter);Intent intent = new Intent("com.example.android_broadcast");sendBroadcast(intent, null);}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();//注销广播unregisterReceiver(mybroadcastreceiver);}}

二、静态接收:

AndroidManifest.xml中添加代码:

        <receiver android:name=".Mybroadcastreceiver" >            <intent-filter>                <action android:name="com.example.android_broadcast" />            </intent-filter>        </receiver>

三、有序接收:

AndroidManifest.xml中添加代码:通过 android:priority 属性给广播接收器设置了优先级,优先级比较高的广播接收器就可以先收到广播。

有序接收只能静态注册。

        <receiver            android:name=".Mybroadcastreceiver"            android:permission="100" >            <intent-filter>                <action android:name="com.example.android_broadcast" />            </intent-filter>        </receiver>


0 0
原创粉丝点击