#android #android-service #aidl #android-service-binding
#Android #android-сервис #aidl #android-привязка службы
Вопрос:
Я создаю приложение (службу aidl), которое будет вызываться с помощью кода в Activity (Activity будет написан кем-то другим, и я не могу его контролировать).
Activity создает привязку к сервису, вызывает методы в сервисе и возвращает результат с помощью обратных вызовов.
Если ориентация действия изменится, ему придется снова привязаться к службе, но предыдущие обратные вызовы будут потеряны.
Каков наилучший способ обработки изменений ориентации активности в привязанном сервисе.
Ответ №1:
Несколько вариантов, в зависимости от ситуации:
1) Измените Activity
ориентацию дескриптора самостоятельно, вместо того чтобы Android
уничтожать и воссоздавать Activity
. Если Activity
имеет много состояний, то это часто полезно делать в любом случае.
2) Убитая Activity
передача Binder
(ссылка на Service
) вновь созданной Activity
. Это можно сделать с помощью NonConfigurationInstance
.
3) Сохраните Binder
(ссылку на Service
) в static
переменной, к которой можно получить доступ из любого класса (это может вызвать утечки памяти, но обычно относительно безопасно).
4) После успешной повторной привязки Service
может отправить обратно все свое текущее «состояние» в новое Activity
(чего может быть достаточно, в зависимости от того, для чего вы используете обратные вызовы).