您的位置:首页 > 其它

BroadcastReceiver的使用简介

2016-06-22 15:22 330 查看
尽量用代码进行BroadcastReceiver的注册,因为在用完之后方便关闭注册。 在AndroidManifest中进行注册后,不管改应用程序是否处于活动状态,都会进行监听,比如某个程序时监听 内存 的使用情况。所以关闭无必要的监听可以使程序更好。

首先声明:

private QueryStationsResultReceiver mQueryStationsResultReceiver;//自定义的BroadcastReceiver
private IntentFilter mQueryStationsResultIntentFilter;


定义继承BroadcastReceiver 的类

public class QueryStationsResultReceiver extends BroadcastReceiver {
private boolean mResult;
private String mErrorCode;
private String mInfo;

public QueryStationsResultReceiver() {
mResult = false;
}
//此方法用来接收广播信息
@Override
public void onReceive(Context context, Intent intent) {


在fragment初次加载时,初始化intentFilter和broadcaster

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//IntentFilger里的参数为action标识
mQueryStationsResultIntentFilter = new IntentFilter(QueryDataIntentService.QUERY_STATIONS_RESULT_INTENT);
mQueryStationsResultReceiver = new QueryStationsResultReceiver();


下面当要用到广播时,进行广播的注册

//此处进行广播注册,两个参数分别为receiver和filter,将receiver和action绑定,用来指定接收哪个广播,
getActivity().registerReceiver(mQueryStationsResultReceiver, mQueryStationsResultIntentFilter);
//调用service进行数据查询
QueryDataIntentService.startActionQueryStations(getActivity(), username, passwd, mRegionId);


查询完数据,在service处发送广播

@Override
protected void onHandleIntent(Intent intent) {
Intent resultIntent = new Intent(QUERY_STATIONS_RESULT_INTENT);//设置intent的action
sendBroadcast(resultIntent);//把intent发送


这时onReceive方法回监听到匹配action的广播

registerReceiver(mQueryStationsResultReceiver, mQueryStationsResultIntentFilter);//重点是这句注册时候指定了哪个action匹配哪个receiver


最后在查询完数据之后我们需要关闭receiver不用再监听了

getActivity().unregisterReceiver(mQueryStationsResultReceiver);


最后说明:QUERY_STATIONS_RESULT_INTENT这个在service里定义的全局静态变量是一个action,作为发送和接收的重要标识。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  安卓