2
我得到「無法恢復活動」RunTimeException,它顯然與我的broadcastReciever(藍牙)有關。 onPause運作良好。但是這個簡單的代碼有什麼問題?接收器生命週期 - 在onResume重新註冊時崩潰()
//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());
}
}
};
是的!謝謝。我開始在Android環境中學習java。我經常想念這些基本的java事物,但只想到更高層次的Android事物。我現在意識到我需要練習一些基本的Java,以便學會「看」這樣的錯誤。 – Tombola 2012-02-27 14:55:25