BroadcastReceiver的两种实现方式
来源:互联网 发布:网络销售的意义 编辑:程序博客网 时间:2024/04/24 16:24
BroadcastReceiver是Android中的广播接收者,既然有接收,自然就有发送,首先看如下发送程序:
Intent broadInt = new Intent("myChannel");broadInt.putExtra("message", "我发送了一则通知!");sendBroadcast(broadInt);
这段代码写在Activity中即可,例如绑定在按钮的点击事件上。
代码包括三行, 第一行是创建一个Intent,并且为该Intent指定Action,Action随意命名即可,当然,不要跟系统中的其他Action冲突。
第二行为该Intent设置捆绑信息,通过此种手段,可以在发送该Intent的同时,把一些信息同时发送出去。
第三行则是发送消息的关键,sendBroadcast方法是Activity的方法,在任一Activity中均可调用,参数为方才定义的Intent。
广播发送后,即可来实现接收程序,我知道的接收程序有两种写法。
第一种是继承android.content.BroadcastReceiver,并实现其onReceive方法:
/** * * Dec 22, 2014 7:02:20 PM * @Geloin * */package com.geloin.baseopera.receiver;import android.app.AlertDialog;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.widget.Toast;/** * * Dec 22, 2014 7:02:20 PM * * @Geloin * */public class BookReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (action.equals("myChannel")) {String message = intent.getStringExtra("message");Toast.makeText(context, message, Toast.LENGTH_LONG).show();} else if (action.equals("SyncService")) {String message = intent.getStringExtra("message");new AlertDialog.Builder(context).setTitle("提示").setMessage(message).setPositiveButton("确定", null).show();}}}
实现代码较为简单,实现onReceive方法,在其内部根据不同的action获取不同的Extra信息,并进行处理即可,当然,没有Extra时做其他处理也是一样的。
还未结束,自定义的Receiver需要在AndroidManifest.xml中进行注册,如下所示:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.geloin.baseopera" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".activity.BooksActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <span style="color:#ff0000;"><provider android:name=".provider.BookProvider" android:authorities="com.geloin.baseopera.provider.BookProvider" android:exported="false" > </provider></span> </application></manifest>
provider即为注册代码。
到这一步,广播的发送及接收过程则已完成。
第二种BroadcastReceiver则不继承android.content.BroadcastReceiver,而是直接使用它。
发送代码与上述一致,不需要修改。
接收代码可写在同一Activity中:
IntentFilter filter = new IntentFilter("myChannel");registerReceiver(new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String message = intent.getStringExtra("message");new AlertDialog.Builder(BooksActivity.this).setTitle("提示").setMessage(message).setPositiveButton("确定", null).show();}}, filter);
事实上与继承BroadcastReceiver的区别并不大,主要代码是registerReceiver,参数是BroadcastReceiver(或子类)及一个IntentFilter,该IntentFilter也必须指定Action且与发送端一致。
与第一种方法不同,或者说最大的区别,应该是此方法不需要在AndroidManifest.xml中注册Receiver,registerReciver方法本身就是注册的方法,所以第一种方式称为静态注册法,第二种方式称为动太注册法。
0 0
- BroadcastReceiver的两种实现方式
- BroadcastReceiver的两种方式
- BroadcastReceiver的两种注册方式
- 安卓中BroadcastReceiver 注册的两种方式
- 安卓中BroadcastReceiver 注册的两种方式
- BroadcastReceiver两种注册方式的使用方法
- BroadcastReceiver的两种注册方式和使用
- BroadcastReceiver广播接收者的两种注册方式
- BroadcastReceiver广播接收者的两种注册方式
- BroadcastReceiver广播接收者的两种注册方式
- Service两种不同的调用方式以及BroadcastReceiver两种不同的注册方式
- Android BroadcastReceiver两种注册方式区别
- BroadcastReceiver 两种注册监听方式
- Android BroadcastReceiver两种注册方式区别
- BroadcastReceiver的使用和两种注册方式之间的区别
- [Android面试题-8] BroadCastReceiver的两种注册方式的异同
- android ,BroadcastReceiver广播的两种不同方式的用法及区别
- BroadcastReceiver的两种注册方式(静态注册和动态注册)
- 管道命令
- springMVC分页
- 关于打不开百度首页问题
- 免费的DNS
- 2014-12-23 百度文库 504 Gateway Time-out
- BroadcastReceiver的两种实现方式
- Python字符编码问题
- python操作xml文件详细介绍
- Nginx负载均衡配置实例详解
- jsp技术之购物车---show.jsp
- mysql学习与整理常用知识
- 补码表示的大数加减乘除运算程序设计
- 没开通百度钱包的,福利来了,初次使用百度转账即可获5元返现
- linux下gcc编译器的使用