发送有序广播
来源:互联网 发布:海洋 知乎 编辑:程序博客网 时间:2024/05/21 06:20
首先编写用户交互页面:
<?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:background="@drawable/stitch_one" tools:context="com.example.bz0209.youxuguangbo.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="80dp" android:onClick="send" android:text="发送有序广播" android:paddingRight="5dp" android:paddingLeft="5dp" android:background="#FBFBFF" android:textSize="20sp"/></RelativeLayout>
界面设置如图:
定义广播类型并发送广播:
package com.example.bz0209.youxuguangbo;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); }}
创建三个广播接收者,分别为:MyBroadReceiverOne、MyBroadReceiverTwo、MyBroadReceiverThree:
编写MyBroadReceiverOne代码:package com.example.bz0209.youxuguangbo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class MyBroadReceiverOne extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("MyBroadReceiverOne","自定义的广播接收者One,接受到了广播事件"); }}
MyBroadReceiverTwo的代码:
package com.example.bz0209.youxuguangbo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class MyBroadReceiverTwo extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("MyBroadReceiverTwo","自定义的广播接收者Two,接受到了广播事件"); }}
MyBroadReceiverThree的代码:
package com.example.bz0209.youxuguangbo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class MyBroadReceiverThree extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("MyBroadReceiverThree","自定义的广播接收者Three,接受到了广播事件"); }}
还需要在清单文件里面注册广播接收者,将三个广播接收者的优先级分别设置为1000、200和600:
<?xml version="1.0" encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.bz0209.youxuguangbo"><application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".MyBroadReceiverOne"> <intent-filter android:priority="1000"> <action android:name="Intercept_Stitch"/> </intent-filter> </receiver> <receiver android:name=".MyBroadReceiverTwo"> <intent-filter android:priority="200"> <action android:name="Intercept_Stitch"/> </intent-filter> </receiver> <receiver android:name=".MyBroadReceiverThree"> <intent-filter android:priority="600"> <action android:name="Intercept_Stitch"/> </intent-filter> </receiver></application></manifest>
运行模拟器,点击“发送有序广播”,发出一条广播事件,观察LogCat窗口下的提示信息发现日志输出是按照三个广播接收者的优先级依次数出的,结果如图:
将广播接收者2的优先级改为1000,并在广播接收者1之前注册,代码:
<?xml version="1.0" encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.bz0209.youxuguangbo"><application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".MyBroadReceiverTwo"> <intent-filter android:priority="1000"> <action android:name="Intercept_Stitch"/> </intent-filter> </receiver> <receiver android:name=".MyBroadReceiverOne"> <intent-filter android:priority="1000"> <action android:name="Intercept_Stitch"/> </intent-filter> </receiver> <receiver android:name=".MyBroadReceiverThree"> <intent-filter android:priority="600"> <action android:name="Intercept_Stitch"/> </intent-filter> </receiver></application></manifest>
运行发现有错:
继续修改MyBroadReceiverTwo,代码如下:
package com.example.bz0209.youxuguangbo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class MyBroadReceiverTwo extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("MyBroadReceiverTwo","自定义的广播接收者Two,接受到了广播事件"); abortBroadcast(); Log.i("MyBroadcastReceiverTwo","我是广播接收者Two,广播被我终结了"); }}
运行结果如图:
阅读全文
0 0
- 广播接收者-发送有序广播
- 广播接收者---发送有序广播
- 发送有序广播
- 发送有序广播
- 发送有序广播
- 发送有序广播
- Android 发送有序广播
- 发送有序广播
- 发送有序广播
- 发送有序广播
- 发送有序广播
- 发送有序广播
- 发送有序广播
- 发送有序广播
- 发送有序广播
- 发送有序广播
- 发送有序广播
- 发送有序广播
- 第一天开通CSDN的记录
- 欢迎使用CSDN-markdown编辑器
- Android系统APP之SettingsProvider
- rsync 3.1.1版本非root运行服务时配置文件的一点改动
- Androd学习笔记
- 发送有序广播
- Android Am命令用法
- 动态规划--最优编辑
- 智能
- Jellyball下拉背景增加松开回弹
- MVC、MVP、MVVM三种开发模式
- 手写EventBus框架
- 程序侯之路的开始
- GreenDao3的基本使用