android 广播

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

发送广播:
一、标准广播

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

        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 {

	@Override
	public 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;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//创建intentFilter实例并添加action
		IntentFilter 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);
	}
	
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值