Android中的广播用途很广,是四大组件之一。在android中可以看到它的各种应用,从系统发出的广播,用户自定义的广播等。
这里详细记录下广播的分类以及使用方法。
广播,是由两方面组成一个流程:广播发送者、广播接收者。
有以下场景:
当网络状态发生变化时,系统(广播发送者)会发出一条广播,这条广播的标识是:android.net.conn.CONNECTIVITY_CHANGE。当开发人员(广播接收者)也添加了这个标识,那开发人员就可以在代码中接收到这条广播。广播接收者可以是多个。
一、广播的分类,按有无顺序区分,可以分为:标准广播、有序广播。
(1)标准广播。就是多个广播接收者,接收到广播是无序的,没有规定谁先谁后。按理想状况来说,是同一时间接收到系统发出的广播。
(2)有序广播。在广播接收者,注册添加这条广播时,有增加了优先熟悉的设置。优先级高的先接收,优先级高的广播接收者,还可以控制是否将广播往下继续传递;
二、广播的注册。
根据注册方式不同有静态注册、动态注册。下面以接收系统广播为例:
(1)静态注册:
有两种方式实现:AndroidManifest.xml中注册+内部类;AndroidManifest.xml中注册+外部类。
这两种的实现都是在AndroidManifest.xml中注册,在代码中写BroadCastReceive的重载即可。
以下是,AndroidManifest.xml中注册+内部类:
package="com.example.broadcasttest_csdn"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="18" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.example.broadcasttest_csdn.MainActivity"
android:label="@string/app_name" >
package com.example.broadcasttest_csdn;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.R.anim;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends Activity {
BroadcastReceiver bReceiver;
IntentFilter iFilter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
iFilter=new IntentFilter();
iFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
bReceiver=new myBroadCast();
registerReceiver(bReceiver, iFilter);
*/
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
//unregisterReceiver(bReceiver);
}
public static class myBroadCast extends BroadcastReceiver
{
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
ConnectivityManager connectivityManager=(ConnectivityMa