BluetoothOBEXプロトコルを複製するクラスがあります。このクラスは、Bluetoothチャットの例に基づいています。このクラスのインスタンスは私のonCreate()
メソッドで構築されます
bluetoothCommunicator = new BluetoothCommunicator(BaseClass.this);
このBluetoothCommunicator
クラスには、Threadを拡張する2つの内部クラスがあります。
AcceptThread
とReadInputThread
通信ソケットが初期化されるbaseClassから、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
メソッド 内のコードを見るだけで、これが発生するのはかなり奇妙に聞こえます。