Android--有序广播的实例解析--案例《拦截有序广播》
来源:互联网 发布:sql语句升序 编辑:程序博客网 时间:2024/06/10 08:32
有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接受到这条信息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以,此时的广播接收器是有先后顺序的,并且可以被拦截。
如下是一个案例:
1.创建一个布局文件
<?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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="@drawable/stitch_one" tools:context="bzu.edu.cn.orderdbroadcast.MainActivity"> <Button android:text="发送有序广播" android:onClick="send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="61dp" android:background="#FBC" android:id="@+id/button" /> </RelativeLayout>
2.编写MainActivity,代码如下:
package bzu.edu.cn.orderdbroadcast; 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");//构建意图,设置动作。把自定义的广播发出去。 //发送广播 sendBroadcast(intent,null);//null为广播接收者的权限 } }
上述代码中,sendOrderedBroadcast(intent,null),用于发送一个有序广播,在该方法中接受两个参数,第一个参数是指定的意图,设置要发送的广播事件bzu,edu.cn.第二个参数指定接受者的权限。如果不想让所有的接受者看到,可以显示的指定接受者的权限。3.添加广播接收者
package bzu.edu.cn.orderdbroadcast; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyBroadcastReceiverOne extends BroadcastReceiver { public MyBroadcastReceiverOne() { } //重写onReceive方法 @Override public void onReceive(Context context, Intent intent) { Log.i("MyBroadcastReceiverOne","自定义的广播接收者One,接收到了广播事件"); } }
package bzu.edu.cn.orderdbroadcast; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyBroadcastReceivertwo extends BroadcastReceiver { public MyBroadcastReceiverOne() { } //重写onReceive方法 @Override public void onReceive(Context context, Intent intent) { Log.i("MyBroadcastReceiverOne","自定义的广播接收者two,接收到了广播事件"); } }
package bzu.edu.cn.orderdbroadcast; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyBroadcastReceiverthree extends BroadcastReceiver { public MyBroadcastReceiverOne() { } //重写onReceive方法 @Override public void onReceive(Context context, Intent intent) { Log.i("MyBroadcastReceiverOne","自定义的广播接收者three,接收到了广播事件"); } }
添加三个广播接收者,不同的广播接收者打印不同的提示信息。
4.在清单文件中注册并为他们指定不同的优先级,代码如下:
//注册receiver。 <receiver android:name=".MyBroadcastReceiverOne" android:enabled="true" android:exported="true" > <intent-filter android:priority="1000"></intent-filter><!--设置优先级--> </receiver> <receiver android:name=".MyBroadcastReceiverTwo" android:enabled="true" android:exported="true" > <intent-filter android:priority="800"></intent-filter> </receiver> <receiver android:name=".MyBroadcastReceiverThree" android:enabled="true" android:exported="true"> <intent-filter android:priority="900"></intent-filter> </receiver> </application>
上述代码中李世勇Android priority指定了广播的优先级。案例编写完成。
阅读全文
1 1
- Android--有序广播的实例解析--案例《拦截有序广播》
- 有序广播的实例解析--android案例《拦截有序广播》
- 拦截有序广播案例
- 案例-----拦截有序广播
- 案例---拦截有序广播
- 案例--拦截有序广播
- 广播--案例:拦截有序广播
- Android--广播的类型及拦截有序广播案例
- Android--有序广播的实例
- android案例之有序广播
- 拦截有序广播
- 拦截有序广播
- 拦截一条有序广播
- 拦截有序广播
- 有序广播拦截
- 拦截有序广播
- 有序广播拦截
- 广播接收者——案例:拦截有序广播
- C++继承相关知识
- hdu 2717-bfs
- 正则表达式
- 如何下载图书馆随书光盘?
- 如何高效学习
- Android--有序广播的实例解析--案例《拦截有序广播》
- 百度对新站的审核期是多久
- MySQL安装及遇到的问题
- install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources 和uninitialized constant Gem:
- Memory中的Channel/Rank/Bank解析
- Dubbo 超时与重试的实现分析
- 多线程知识点
- 短彩信的安全红线问题
- 利用Instrumentation单元测试模块控制安卓手机进行各项操作(微信)