как избежать андроид вм выпустить синглтон - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть одно приложение для Android, которое выполняет некоторые задачи в фоновом режиме, когда пользователь не открыт с приложением.

Идея состоит в том, что пользователь открывает приложение и настраивает некоторые задачи, которые нужно выполнить в фоновом режиме, а затем используетдругие приложения и задачи выполняются.

, чтобы выполнять задачи в фоновом режиме, я создал Service, поэтому Android поддерживает его активным, даже когда приложение больше не отображается на экране ...

В моем приложении есть фасад, который отвечает за запросы API к моему серверу (этот фасад - одиночный).Для создания экземпляра синглтона мне нужно взаимодействие с пользователем, чтобы он мог предоставить информацию для аутентификации и иногда подтвердить вход в систему с помощью 2factor auth.

проблема в том, что иногда, когда приложение не на переднем плане, android уничтожает весь экземплярприложения (включая singleton) фоновая служба продолжает работать, потому что это служба, но когда пользователь перезапускает приложение и любая активность пытается получить доступ к singleton, он получает nullpointerexcetion

мой синглтон является способомСложно сделать, чтобы понять, какой шаблон или стратегия дизайна я должен следовать, чтобы избежать этой проблемы.

1 Ответ

0 голосов
/ 26 ноября 2018

Вы должны сохранить состояние синглтона, когда вызывается метод onSaveInstanceState для настройки Bundle.Затем, когда действие будет воссоздано снова, будет вызван OnCreate, и платформа передаст в качестве параметра Bundle, который также будет содержать данные, которые вы сохранили ранее.При этом вы можете снова установить свойства синглтона.Вы можете прочитать больше здесь .

...