1
我有一個複製藍牙OBEX協議的類。該課程基於藍牙聊天示例。這個類的一個實例在我onCreate()
方法構造onResume()的奇怪行爲 - 線程已經啓動
bluetoothCommunicator = new BluetoothCommunicator(BaseClass.this);
此BluetoothCommunicator
類具有延伸螺紋
AcceptThread
和ReadInputThread
從我的基類,其中所述通信插座被初始化兩個內部類,我也有onResume()
和onPaused()
方法。
@Override
public void onResume() {
bluetoothCommunicator.resumeCommunicator();
}
這將調用resumeCommunicator方法:
public void resumeCommunicator() {
Log.i("RESUME COMMUNICATOR: ", "COMMUNICATOR IS RESUMED");
if(server == null)
Log.i("Server: ", "IS NULL");
if (server == null) {
AcceptThread server = new AcceptThread();
server.start();
}
if(!server.isAlive()) {
server.start();
}
}
在這種方法中,server
是AcceptThread
實例,但這種onResume
方法會造成一些問題,對我來說。當我將應用程序放在後臺並嘗試再次打開時,將調用onResume
方法,但它表示線程已經啓動並引發異常。通過查看resumeCommunicator
方法中的代碼,這聽起來很奇怪,會發生這種情況。
您會在哪一行發生異常?你可以發佈你的'onPause()'的相關部分嗎? –
線程不必因爲應用程序放在後臺而死掉。你有哪些例外?另外,這段代碼看起來並不正確:你檢查'server'是否爲null,並創建一個新線程(在該範圍內),然後調用isAlive()方法。我不知道其他代碼中發生了什麼,但這仍然可能導致NullPointerException。 – takecare