BluetoothSPPLibraryは結構優秀なライブラリーで使用していたのだけど、回転時とか、Activityから離れた時にLostすることが多かった。でもonDestoryとかでbt.stopとかしていたらまぁ、動く事が多かったからそのまま放置していた。
しかし、前にも書いたかもしれないけどなぞのActivityの死亡が時々見られた。
業務ソフトでたまに死んでは話にならないので根本的に見直すことにした。
結論。
globalsで定義して対応。
たったこれだけかもしれないけどとりあえず今のところAcvitiy死なないし、しかもLostもなくなった。
Globals:
public class Globals extends Application { BluetoothSPP bt;
MainActivity:
@Override protected void onStart() { super.onStart(); if(globals.bt==null)globals.bt = new BluetoothSPP(this.getApplicationContext()); if(!globals.bt.isBluetoothEnabled()) { globals.bt.enable(); Toast.makeText(this, "Bluetoothを有効にしています", Toast.LENGTH_SHORT).show(); } else { if(!globals.bt.isServiceAvailable()) { globals.bt.setupService(); globals.bt.startService(BluetoothState.DEVICE_OTHER); setup(); } } if(!globals.bt.isBluetoothAvailable()) { Toast.makeText(this, "Bluetoothが存在しません。", Toast.LENGTH_SHORT).show(); // any command for bluetooth is not available }
たったこれだけでとりあえずタスク切り替えても切断されず動いた。
あとはactivityが謎の死を遂げないかを祈るだけである。