我有个程序是这么写的。
//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广播接收。请问这么做有没有问题,还是一定需要在同一个地方同一个时间一次性注册?
------解决方案--------------------
各注册各的,不用管别人,很多系统里的广播不也是很多应用都监听了吗?
------解决方案--------------------
是滴,可以用一个,系统存储的是一个map