Android: поворот экрана, уничтожить и загадка услуг

Я изменил пример чата Bluetooth из демоверсий SDK, чтобы иметь возможность управлять светодиодной матрицей с питанием от Arduino. Используя программу чата, я могу отправлять сообщения на дисплей через Bluetooth. У меня проблема, хотя. Я сделал две компоновки экрана, портрет и пейзаж. Таким образом, интерфейс может занимать как можно больше места на телефоне независимо от ориентации.

Проблема в том, что если телефон поворачивается, вызывается OnDestroy (), чтобы перезагрузить новый макет (альбомная или книжная). В подпрограмме OnDestroy () я также уничтожаю ссылку bluetooth, если она установлена:

   public void onDestroy() {
        super.onDestroy();
        // Stop the Bluetooth chat services
        if (mChatService != null)
            mChatService.stop();
        if (D)
            Log.e(TAG, "--- ON DESTROY ---");
    }

Читая другие посты здесь, я обнаружил, что вы можете предотвратить остановку сервиса, добавив «android: configChanges =« direction »» в манифест. При этом, когда я поворачиваю экран, моя связь Bluetooth с дисплеем больше не прерывается, однако теперь экран не перерисовывается в альбомном режиме.

Чтобы исправить это, я думаю об удалении раздела «if mchatservice ...», который завершает соединение, но тогда мне все равно понадобится код для запуска при окончательном завершении приложения.

Есть ли способ перерисовать экран при повороте, не прерывая соединение? Если нет, я думаю, что я всегда могу переместить служебный код в событие OnPause (), однако это приведет к разрыву соединения, если приложение когда-либо потеряет фокус на землю.

Есть ли другие способы?

Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос