`

无序广播与有序广播

 
阅读更多

一.普通广播(无序广播)

1.首先要了解一下无序无播的生命周期,API中写到广播生产周期,提供一个有效期间表示调用onReceive有效的,一但方法执行完毕对象finsh掉了, 可以在onReceive方法中做任何异步的操作。

2.使用自定义无序广播要有发送者设置一个意图setAction("xxx");广播接收者需在AndroidManifest.xml中过滤意图才能接收到广播。

 

代码如下:

广播的发送

protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button = (Button) this.findViewById(R.id.button1);
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				// 发送广播,一个意图(普通无序的)
				Intent intent = new Intent(MainActivity.this,
						MyBrocastReceiver.class);
				intent.setAction("abc");
				intent.putExtra("name", "kaitao");
				sendBroadcast(intent);
			}
		});
	}

 广播的接收可以在onReceive中做任意的异步操作

//广播接收者
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		String name = intent.getStringExtra("name");
		Toast.makeText(context, name, 1).show();
	}

广播的接收也可以做一个通知

	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		manager = (NotificationManager) context
				.getSystemService(Context.NOTIFICATION_SERVICE);
		String name = intent.getStringExtra("name");
		// 做一个通知,不能在onReceive里面用AerltDialog
		NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
		builder.setContentTitle("没有网了");
		builder.setContentText("wifi掉了");
		builder.setTicker("广播来了");
		builder.setSmallIcon(R.drawable.ic_launcher);
		manager.notify(1001, builder.build());
	}

 

 

 AndroidManifest.xml设置

这里<receiver android:name=".MyBrocastReceiver2">是指定哪个类接收广播。
而 <action android:name="abc"/>则是过滤条件,   intent.setAction("abc");。

    <!-- 注册广播接收者 -->
        <receiver 
            android:name=".MyBrocastReceiver">
            <intent-filter>
                <action android:name="abc"/>
            </intent-filter>
        </receiver>
        <receiver android:name=".MyBrocastReceiver2">
            <intent-filter>
                <action android:name="abc"/>
            </intent-filter>
        </receiver>
        <receiver android:name=".MyBrocastReceiver3">
            <intent-filter>
                <action android:name="abc"/>
            </intent-filter>
        </receiver>

 

二、有序广播

使用有序广关健处在于定义接收者的优先权,以下代码中有三个类接收广播,

<intent-filter android:priority="1000">是定义接收的先后权限,priority值越大其优先权越大。

 <receiver android:name=".One">
            <intent-filter android:priority="900">
                <action android:name="abc"/>
            </intent-filter>
        </receiver>
        
         <receiver android:name=".Two">
            <intent-filter android:priority="1000">
                <action android:name="abc"/>
            </intent-filter>
        </receiver>
        
          <receiver android:name=".There">
            <intent-filter android:priority="800">
                <action android:name="abc"/>
            </intent-filter>
        </receiver>

 如果在接收者类中onReceive方法中,使用abortBroadcast();即终止广播,后面的广播不会在继续。

0
0
分享到:
评论

相关推荐

    传智播客_Andorid_20天精通Android开发视频_第11天视频_视频_09_发送有序广播&有序广播和无序广播的区别

    传智播客_Andorid_20天精通Android开发视频_第11天视频_视频_09_发送有序广播&有序广播和无序广播的区别.avi

    发送无序广播

    无序广播(Non-Ordered Broadcast)是广播的一种类型,与有序广播(Ordered Broadcast)不同,它不保证接收者的顺序,所有接收者会同时收到广播。下面我们将详细讨论如何在Android中自定义发送无序广播以及相关知识...

    传智播客_Andorid教程_20天从零到精通Android开发视频_第11天09_有序广播和无序广播的区别

    传智播客_Andorid教程_20天从零到精通Android开发视频_第11天 09_有序广播和无序广播的区别

    Broadcast-有序广播

    因此,在性能要求较高的场景下,无序广播(Parallel Broadcast)可能更为合适。 总的来说,有序广播是Android系统中一种强大的通信机制,它允许应用组件在后台协同工作,即使它们并不直接相互了解。理解并正确使用...

    android广播详解demo

    详细介绍广播的用法,代码有注释,简明易懂,实现广播的两种形式,有序广播和无序广播;详细介绍广播的用法,代码有注释,简明易懂,实现广播的两种形式,有序广播和无序广播;详细介绍广播的用法,代码有注释,简明...

    Android BroadcastReceiver实例Demo(有序广播的发送)

    广播分为两种类型:有序广播(Ordered Broadcast)和无序广播(Unordered Broadcast)。有序广播允许接收者之间按照优先级顺序接收并处理广播,而无序广播则不保证接收者的处理顺序。 接下来,我们将重点讨论有序...

    Android广播接收和发送

    **五、有序广播与无序广播的区别** 1. **处理顺序**: 有序广播按照接收者的优先级依次执行,而无序广播则没有特定顺序。 2. **拦截能力**: 有序广播的接收者可以使用abortBroadcast()方法阻止广播继续向下传递,...

    OrdereBroadcast有序广播

    在Android中,广播分为有序广播(Ordered Broadcast)和无序广播(Unordered Broadcast)。有序广播的特点在于它会按照接收者的优先级顺序逐个分发,而无序广播则是同时分发给所有注册的接收者。 ### 有序广播的...

    Android广播简介.zip

    Android广播分为两种主要类型:有序广播(Ordered Broadcast)和无序广播(Unordered Broadcast)。接下来,我们将深入探讨这两种广播的特点、使用场景以及如何在实际开发中运用它们。 **1. 有序广播(Ordered ...

    android中广播接收

    本篇将详细介绍Android中的广播接收者,包括有序广播和无序广播,以及如何通过`sendOrderBroadcast`和`sendBroadcast`方法发送广播。 首先,广播接收者在AndroidManifest.xml文件中注册,或者在代码中动态注册。...

    广播的案例源码

    广播分为有序广播(Ordered Broadcast)和无序广播(Unordered Broadcast)两种类型。 2. **有序广播(Ordered Broadcast)** 在有序广播中,广播接收者按照注册顺序依次接收广播,每个接收者有时间处理广播并返回...

    Android Studio—广播拦截、指定广播接收者.zip

    首先,广播分为两种类型:有序广播(Ordered Broadcast)和无序广播(Unordered Broadcast)。有序广播按照优先级依次传递,而无序广播则同时传递给所有注册的接收者。在Android Studio中,我们通常通过创建...

    Android有序广播

    根据处理方式的不同,广播可以分为有序广播与无序广播两种类型。 #### 一、什么是有序广播? 有序广播是一种特殊的广播形式,它支持广播接收者按照优先级顺序接收广播,并且前一个接收者可以拦截、修改广播数据或...

    BroadcastReceiver广播接收器演示demo

    7. **有序广播与无序广播**: 有序广播(Ordered Broadcast)按照接收者注册的顺序依次执行`onReceive()`方法,可以拦截并修改广播数据。无序广播(Broadcast)则是并行执行,无法拦截和修改广播数据。 通过...

    android 应用 源代码——广播

    -有序广播(Ordered Broadcast):接收者按照优先级顺序逐个接收广播,可以修改并传递数据给下一个接收者。 -无序广播(Unordered Broadcast):所有接收者同时接收到广播,无法控制接收顺序,也不能传递数据。 3...

    广播接收和发送

    在Android中,广播分为两种类型:有序广播和无序广播。有序广播(Ordered Broadcast)按照接收者的优先级进行传递,每个接收者有机会处理并改变广播的数据。无序广播(Broadcast)则是同时分发给所有注册的接收者,...

    android自定义广播

    5. **有序广播和无序广播**: Android有两种类型的广播,有序广播(Ordered Broadcast)和无序广播(Broadcast)。有序广播可以根据接收者设定的优先级顺序依次执行,而无序广播则不保证执行顺序。默认情况下,自定义...

Global site tag (gtag.js) - Google Analytics