我得到“无法恢复活动”RunTimeException,它显然与我的broadcastReciever(用于蓝牙)有关。 onPause效果很好。但是这个简单的代码出了什么问题?
//Class fields:
boolean isReceiverRegistered = false; //My flag
IntentFilter intentFilter = null;
//Inside onCreate:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
if (!isReceiverRegistered) {
registerReceiver(intentReceiver, intentFilter);
isReceiverRegistered = true;
}
protected void onResume() {
super.onResume();
if (!isReceiverRegistered) {
registerReceiver(intentReceiver, intentFilter); //THE CRASH STATEMENT
isReceiverRegistered = true;
}
}
protected void onPause() {
super.onPause();
if (isReceiverRegistered) {
try {
unregisterReceiver(intentReceiver);
} catch (IllegalArgumentException e) {
}
isReceiverRegistered = false;
}
}
BroadcastReceiver intentReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
Log.v(TAG, "connected:"+device.getName());
}
else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
Log.v(TAG, "disconnected:"+device.getName());
}
}
};
答案 0 :(得分:2)
在onCreate中,您创建了intentFilter,但您的类字段intentFilter仍然为null。尝试 在你的onCreate:
.....
intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
.....