Как справиться с привязкой вспомогательных услуг при смене ориентации - PullRequest
0 голосов
/ 21 марта 2019

Я создаю приложение (службу помощи), которое будет вызываться с помощью кода в Activity (Activity будет написана кем-то другим, и я не могу это контролировать).

Activity создает привязку к сервису, вызывает методы в сервисе и возвращает результат через обратные вызовы.

Если ориентация деятельности изменится, ей придется снова привязываться к сервису, но предыдущие обратные вызовы будут потеряны.

Каков наилучший способ обработки изменений ориентации активности в связанном сервисе.

1 Ответ

0 голосов
/ 21 марта 2019

Несколько вариантов, в зависимости от ситуации:

1) Попросите ручку Activity изменить ориентацию вместо того, чтобы позволить Android убить и воссоздать Activity. Если у Activity много состояний, то в любом случае это хорошая вещь.

2) Пусть убитый Activity вручит Binder (ссылка на Service) вновь созданному Activity. Это можно сделать с помощью NonConfigurationInstance.

3) Сохраните Binder (ссылка на Service) в переменной static, к которой можно получить доступ из любого класса (это может вызвать утечки памяти, но обычно относительно безопасно).

4) При успешном повторном связывании Service может отправить обратно все свое текущее «состояние» в новое Activity (этого может быть достаточно, в зависимости от того, для чего вы используете обратные вызовы).

...