У меня есть singleton, который хранит некоторую разумную информацию о пользователе моего приложения. В настоящий момент он хранит логин пользователя и местоположение пользователя.Самый быстрый способ использования BroadcastReceiver в одном и том же тоне и более
1) Местоположение расположено через Службу. В настоящий момент Служба ссылается на мой синглтон напрямую, чтобы заполнить долготу и широту. Я хотел бы использовать BroadcastReceiver для отправки широковещательной передачи, которую singleton слышит и использует для обновления значений.
Однако, чтобы зарегистрировать BroadcastReceiver, мне нужен контекст в моем синглетоне. Какой самый гладкий способ добиться того, чего я хочу. Возможно, BroadcastReceiver не является подходящим объектом?
2) Кроме того, с какими проблемами я сталкиваюсь с использованием синглета? Я предполагаю, что Android, возможно, вернет эту память в любой момент времени (что, очевидно, было бы плохо); так как я могу это предотвратить? Пропустит ли контекст приложения и сохранит его в переменной-члене?
В документации на Android говорится: «Но жизненный цикл статики не очень под вашим контролем, поэтому, чтобы придерживаться модели жизненного цикла, класс приложения должен инициировать и разрушать эти статические объекты в onCreate () и onTerminate() класса Application, но я не совсем уверен, как это сделать.
Спасибо за ваш вклад. Как бы вы порекомендовали «переносить»: эта информация? Вы предлагаете читать его из базы данных каждый раз, когда он (предположим, что «это» информация для входа, передаваемая с помощью веб-службы)? – Andrew
Да, сохраните его в базе данных или в 'SharedPreferences' – Falmarri
. Вы бы рекомендовали сохранить мой синглтон с переменными-членами, содержащими регистрационную информацию и создав метод в singleton для их получения, который либо возвращает запрашиваемое значение, либо , если он не установлен (т. е.: singleton был уничтожен и воссоздан), считывается из базы данных, устанавливается и возвращается? – Andrew