以监听网络变化为例
1.在AndroidManifest.xml 中声明
首先在AndroidManifest.xml中声明
<!-- 监听网络变化-->
<receiver android:name=".user.NetChangeBroadcastReceiver">
<intent-filter >
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
其次 因为声明的广播接收者是在主包下的user包下声明的所以 广播接收者的类也要相应的声明在user包下 写一个类继承.BroadcastReceiver
package com.mapbar.android.mapbarmap.user;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class NetChangeBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
do something............
}
}
这样当网络有变化的时候就会调用这个类 就会触发onReceive()方法 了
2.在代码里面声明
package com.mapbar.android.mapbarmap.user;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class NetChangeBroadcastReceiver extends Activity{
private BroadcastReceiver netStateReceiver; //注册广播的实力对象
@Override
protected void onStart() {
super.onStart();
netStateReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
do something............
}
}
};
registerReceiver(netStateReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); //注册网络监听广播
//前者是注册广播的实力对象 后者是接收的广播类型
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
unregisterReceiver(netStateReceiver); //注销网络监听广播
}
}
在一个activity中 广播的注册和注销应该是成对出现的 避免重复注册广播
如有错误或者不全 请及时提出 或补充 谢谢