我有个程序是这么写的。
//IntentFilter是配合Intent而生的,你有目标行动或者结果,那么那些行动和结果就会有他完成的特定要求,
//这些要求就是IntentFilter,可以理解为Intent和IntentFilter是相对应的
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED); //指明一个远程设备的连接状态的改变
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); //蓝牙状态值发生改变触发
this.registerReceiver(deviceStateListener, filter);
} @Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.d(TAG, "onStart() mService= " + mService);
IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
//在Android应用程序框架中,Activity和Service类都继承了ContextWrapper类,因此,
//我们可以在Activity或者Service的子类中调用registerReceiver函数来注册广播接收器
//调用ContextWrapper类的registerReceiver函数来把广播接收器BroadcastReceiver注册到ActivityManagerService中去的
this.registerReceiver(deviceStateListener, filter);
}
以上程序在两个地方注册了deviceStateListener广播接收。请问这么做有没有问题,还是一定需要在同一个地方同一个时间一次性注册?
//IntentFilter是配合Intent而生的,你有目标行动或者结果,那么那些行动和结果就会有他完成的特定要求,
//这些要求就是IntentFilter,可以理解为Intent和IntentFilter是相对应的
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED); //指明一个远程设备的连接状态的改变
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); //蓝牙状态值发生改变触发
this.registerReceiver(deviceStateListener, filter);
} @Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.d(TAG, "onStart() mService= " + mService);
IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
//在Android应用程序框架中,Activity和Service类都继承了ContextWrapper类,因此,
//我们可以在Activity或者Service的子类中调用registerReceiver函数来注册广播接收器
//调用ContextWrapper类的registerReceiver函数来把广播接收器BroadcastReceiver注册到ActivityManagerService中去的
this.registerReceiver(deviceStateListener, filter);
}
以上程序在两个地方注册了deviceStateListener广播接收。请问这么做有没有问题,还是一定需要在同一个地方同一个时间一次性注册?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货