Android-приложение не выпускает Bluetooth должным образом при выходе

Я отчаянно нуждаюсь в решении этой проблемы, по какой-то причине на другом устройстве, на котором я тестировал свое приложение Bluetooth, когда я закрываю приложение (onDestroy()) и повторно вхожу в него, соединение Bluetooth не работает. В настоящее время единственным решением этой проблемы является выключение и включение Bluetooth для устройства.

Код, который я использую, более или менее является образцом bluetoothchat для Android. Я создаю 2 соединения bt с ранее выбранным устройством.

Затем я обмениваюсь данными с этими сокетами, используя входной и выходной потоки.

Когда мое приложение уничтожено - я закрываю входные и выходные разъемы и разъемы Bluetooth, я даже тогда убиваю процесс (нашел здесь некоторый код), но когда я возвращаюсь в приложение, соединение не работает.

Может ли кто-нибудь предложить какую-либо помощь из того, что я сказал до сих пор? На данный момент у меня довольно много кода, поэтому я не знаю, что вставлять, но соединение bt в основном использует классы из примера, а затем передает эти созданные сокеты другим моим классам.

заранее спасибо


person T-basket Dotcodotuk    schedule 16.08.2011    source источник
comment
Не могли бы вы добавить несколько фрагментов кода к вашему вопросу? Особенно то, что вы делаете в onDestroy() и как вы инициализируете bluetooth в onCreate(). Может быть, вам следует делать это в onResume()/onPause()?   -  person grzaks    schedule 31.08.2011
comment
Пожалуйста, опубликуйте вывод logcat о неудачном соединении.   -  person Joel F    schedule 07.09.2011


Ответы (2)


Лучше всего использовать onDestroy следующим образом, надеюсь, вы делаете что-то подобное.

@Override
protected void onDestroy() {
   if (localBT != null) {
   localBT.close();
   }
   super.onDestroy();
}
person Manish Singh    schedule 04.09.2011

Как уже упоминал Гакс, ваша проблема может быть связана с onResume()/onPause(). Вы абсолютно уверены, что вызывается ваша очистка onDestroy (например, вы регистрируетесь и/или смотрите logcat)?

Если ваше приложение не является постоянным, может быть лучше выполнить очистку, когда приложение больше не используется (onPause).

Кроме того, если у вас есть два соединения, нужно ли что-то особенное сделать, чтобы закрыть их оба? Просто догадываюсь об этом.

person ProjectJourneyman    schedule 06.09.2011