Android20_播音机制(一)
Android20_广播机制(一)


四、BroadcastReceiver的生命周期
一、Android广播机制介绍
Android:操作系统
BroadcastReceicer:广播接收器,需要注册到Android系统上
事件:如接到短信、电话
二、BroadcastReceiver的作用
每一个BroadcastReceiver都是用来处理不同的事件对象的,Android操作系统产生一个事件的时候,Android就会通知所有BroadcastReceiver产生一个事件,每个BroadcastReceiver就会判断是否是事件是否是自己要处理的事件,如果是当前BroadcastReceiver的事件,才会接收。指明每一个BroadcastReceiver是处理哪个事件,注册到Android操作系统上去主要是在AndroidManifest.xml中设置(是在application标签内)。
<receiver android:name=".TestBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.EDIT"/> </intent-filter> </receiver>Receiver标签的android:name属性表示将哪一个BroadcastReceiver注册到操作系统上面,filter标签上表示当前BroadcastReceiver是处理哪一类的事件动作的。
Action指的是当前操作是什么类型,即处理数据的方法。data表示将要操作的数据。要想把广播发送出去必须调用sendBroadcast方法。
三、BroadcastReceiver的编写
一个小例子,在BroadcastReceiverActivity中有个按钮,点击发送一个广播,同时在TestBroadcastReceiver中接收。
BroadcastReceiverActivity.java——发送广播
package com.android.activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class BroadcastReceiverActivity extends Activity { private Button broadcast = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); broadcast = (Button)findViewById(R.id.broadcast); broadcast.setText("测试广播机制"); broadcast.setOnClickListener(new BroadcastListener()); } class BroadcastListener implements OnClickListener{ public void onClick(View v) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_EDIT); BroadcastReceiverActivity.this.sendBroadcast(intent); } } }
TestBroadcastReceiver.java——接收广播
package com.android.activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class TestBroadcastReceiver extends BroadcastReceiver { public TestBroadcastReceiver() { System.out.println("TestBroadcastReceiver"); } @Override public void onReceive(Context context, Intent intent) { System.out.println("TestBroadcastReceiver --> onReceive"); } }
AndroidManifest.xml——注册接收广播类型
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.activity" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".BroadcastReceiverActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".TestBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.EDIT"/> </intent-filter> </receiver> </application> </manifest>
输出结果:
四、BroadcastReceiver的生命周期
TestBroadcastReceiver对象一旦生成就会调用该对象的onReceive方法,当方法返回时该对象就变成垃圾对象了,当再次发送广播时会重新声明TestBroadcastReceiver对象。