Синглтон уничтожается - PullRequest
4 голосов
/ 20 июня 2011

У меня есть действие, которое запускает службу.Также есть синглтон Data.Когда я закрываю действие, переходя на домашний экран, синглтон Data через некоторое время разрушается, но, как и должно быть, служба продолжает работать.Поэтому некоторые поля Data снова становятся null, и служба сталкивается с нулевыми указателями.

Как можно предотвратить это?

Ответы [ 2 ]

6 голосов
/ 20 июня 2011

Насколько я знаю, Activity экземпляры запускаются внутри собственного загрузчика классов для безопасности. Любой синглтон, присоединенный к классу, который загружается в результате загрузки Activity, привязан к этому загрузчику классов, который, в свою очередь, связан с жизненным циклом действия.

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

Вам нужно сериализовать любое постоянное состояние и затем десериализовать его при запуске Activity.

1 голос
/ 20 июня 2011

Один из способов сделать это - сохранить ссылку на ваш объект в вашем подклассе Application, который вы создаете.Это простой обходной путь, который в большинстве случаев работает без необходимости создавать Service или постоянно сериализовывать состояние.

...