广播机制(一)
来源:互联网 发布:返利淘宝网红包怎么用 编辑:程序博客网 时间:2024/06/07 13:35
Broadcast Receiver:
广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组建级别,而广播事件处理机制是系统级别,广播机制的特点是:发送方并不关心接收方是否接收了数据,也不关心接收方是如何处理数据的,开发广播接收器并将广播接收器对象注册到Android操作系统中,当一个事件产生时,Android操作系统就会通知这些BroadCastReceiver,BroadCastReveiver首先判断这个事件是否是我们需要的事件,因为不同的广播可能处理不同的事件,如果是我们需要的事件则会创建一个BroadCastReceiver对象,并调用onReceive()方法
Broadcast Receiver的生命周期:
Broadcast Receiver对象仅在onReceiver()是有效,当改方法执行完毕后,系统会销毁该对象(即onReceiver()调用后,改对象就不存在了)
注册BroadCastReceiver的方法:
(一)在AndroidManifest.xml文件中进行注册(与Actiivty无关,不会因为Actiivty被销毁而不存在,BroadCastReceiver会一直存在)
a.编写类继承BroadCastReceiver,复写onReceiver()方法
b.在AndroidManifest.xml中注册BroadCastReceiver
c.构建intent对象
d.调用sendBroadcast()方法发送广播
1、布局文件中显示一个Button
<Button android:id="@+id/sendButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/sendButton" />
2、BroadCastActivity.java文件中
sendButton=(Button)this.findViewById(R.id.sendButton); sendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent=new Intent(); intent.setAction(Intent.ACTION_EDIT); BroadCastActivity.this.sendBroadcast(intent); sendButton.setText("aa"); } });
3.BoardReceive.java文件中
public BoardReceice() { System.out.println("BoardReceice"); } @Override public void onReceive(Context arg0, Intent arg1) { // TODO Auto-generated method stub System.out.println("onReceive"); }
4.在AndroidMainfest.xml中进行配置
<receiver android:name=".BoardReceice"> <intent-filter> <action android:name="android.intent.action.EDIT"></action> </intent-filter> </receiver>
打印结果(单击两次):
(二)在应用程序的代码中进行注册
a.注册BroadcastReceiver
registerReceiver();
b.取消注册
unregisterReceiver()
1.创建一个SMSReceiver.java的类,内容如下:
package wei.cao.broadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.telephony.SmsMessage;public class SMSReceiver extends BroadcastReceiver{public SMSReceiver() { System.out.println("SMSReceiver()");}@Overridepublic void onReceive(Context arg0, Intent arg1) { System.out.println("onReceive()"); //接受Intent对象当中的数据 Bundle bundle=arg1.getExtras(); //在Bundle对象当中有一个属性名为pdus,这个属性值是一个Object数组 Object[] myOBJpdus=(Object[])bundle.get("pdus"); //创建一个SmsMessage类型的数组 SmsMessage[] message=new SmsMessage[myOBJpdus.length]; for (int i = 0; i < myOBJpdus.length; i++) { //使用Object数组当中的对象创建SmsMessage对象 message[i]=SmsMessage.createFromPdu((byte[]) myOBJpdus[i]); //调用SmsMessage对象的getDisplayMessageBody()方法,就可以得到消息的内容 System.out.println(message[i].getDisplayMessageBody());}}}
2.新建一个Activity:BroadCastActivity.java,内容如下:
package wei.cao.broadcast;import wei.cao.boardcast.R;import android.app.Activity;import android.content.IntentFilter;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class BroadCastActivity extends Activity { /** Called when the activity is first created. */private Button registerReceiver=null;private Button unRegisterReceiver=null;SMSReceiver receiver=null;private static String SMS_ACTION="android.provider.Telephony.SMS_RECEIVED"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); registerReceiver=(Button)this.findViewById(R.id.registerReceiver); unRegisterReceiver=(Button)this.findViewById(R.id.unRegisterReceiver); registerReceiver.setOnClickListener(new OnClickListener(){public void onClick(View arg0) { //生成一个BroadcastReceiver对象 receiver=new SMSReceiver(); //生成一个IntentFilter对象IntentFilter intentFilter=new IntentFilter();//为Intent对象添加ActionintentFilter.addAction(SMS_ACTION);//将BroadCastReceiver注册到系统当中BroadCastActivity.this.registerReceiver(receiver, intentFilter); } }); unRegisterReceiver.setOnClickListener(new OnClickListener(){public void onClick(View arg0) {//解除BroadCastReceiver对象的注册BroadCastActivity.this.unregisterReceiver(receiver); } }); }}
3.运行结果
- 广播机制(一)
- android 广播机制一
- 广播机制(一)
- Android广播机制一
- 广播机制一(广播接收器)
- [Android]广播机制概述 一
- Android 广播机制(一)
- Android广播注册机制剖析【android广播系列一】
- Android中的广播机制(一)----- 接收广播
- Android开发-广播机制(一)
- Android之广播机制简介一
- Android广播机制一注册流程
- Android 广播内部机制详解(一)
- Android广播管理一--Broadcast机制介绍
- 广播机制
- 广播机制
- 广播机制
- 广播机制
- 数据库
- 编程之美--快速寻找满足条件的两个数
- [Linux项目实践] 物联网单板测试:OLED Dis_Menu
- Windows 7 x64 下用IIS FastCGI模式配置php-5.3.10-nts-Win32-VC9-x64
- android intent使用方法
- 广播机制(一)
- Tomcat7.0配置连接池的步骤
- 国嵌视频学习第二天——库函数访问文件
- tar
- vb总结
- 技术随笔 迁移记
- swing
- oralce 正则表达式
- 使用cacti自定义graph template进行监控