Вопрос

У меня есть Singleton, который хранит некоторую разумную информацию о пользователе моего приложения. На данный момент он хранит вход пользователя и местоположение пользователя.

1) Расположение находится через сервис. На данный момент сервис ссылается на мой синглтон напрямую, чтобы начать долготу и широту в нее. Я хотел бы использовать широковещатель для отправки трансляции, что Singleton слышит и использует для обновления значений вместо этого.

Тем не менее, для регистрации широкообразователя мне нужен контекст в моем синглтоне. Что такое самоестрельный способ достичь того, что я хочу. Является ли BroadCastreceiver, возможно, не соответствующий объект?

2) Кроме того, какие проблемы я смотрю с помощью Singleton? Я предполагаю, что Android, возможно, вернет эту память в любой момент времени (что, очевидно, было бы плохо); Так как я могу это помешать этому? Будет проходить в контексте приложения и хранить его в переменную участника Thtwart это?

Документация Android заявляет: «Но жизненный цикл статического не очень хорошо под вашим контролем; так что соблюдать модель жизненного цикла, класс Application должен инициировать и оторвать эти статические объекты в OnCreate () и Onterminate ) Методы применения класса ", но я не совсем уверен, как это достичь.

Это было полезно?

Решение

Тем не менее, для регистрации широкообразователя мне нужен контекст в моем синглтоне. Что такое самоестрельный способ достичь того, что я хочу. Является ли VerveCastreceiver, возможно, не подходящий> объект?

«Slickest Way» - не делать то, что вы делаете. Пожалуйста, зарегистрируйте только BroadcastReceiver из Activity, Service, или может быть ан Application. Отказ Ты должен нерегистрировать это BroadcastReceiver когда Activity, Service, или Application разрушен.

Я предполагаю, что Android, возможно, вернет эту память в любой момент времени (что, очевидно, было бы плохо); Так как я могу это помешать этому?

Вы не делаете. Android оставляет за собой право прекратить ваш процесс в любое время (например, чтобы восстановить память). Убийцы задач на Android 2.1 и предыдущие прекратит ваш процесс в любое время. Как только все компоненты вашего приложения будут разрушены, Android может в любое время перерабатывать свой процесс, очистив вашу кучу одновременно. И так далее.

Только положите вещи в память, которую вы не против потерять.

Лучше всего подумать о вашем «приложении» в качестве корзины слабо связанных компонентов, а не как монолитного объекта.

Будет проходить в контексте приложения и хранить его в переменную участника Thtwart это?

Нет.

Документация Android заявляет: «Но жизненный цикл статического не очень хорошо под вашим контролем; так что соблюдать модель жизненного цикла, класс Application должен инициировать и оторвать эти статические объекты в OnCreate () и Onterminate ) Методы применения класса ", но я не совсем уверен, как это достичь.

Создать подкласс Application и указать в манифесте, что Android должен использовать его через android:name атрибут на то <application> элемент.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top