в Android, когда служба и действие используют один и тот же статический класс, создается ли класс дважды?

#android

#Android

Вопрос:

это просто вопрос общего характера — из любопытства…

В Android, когда activity и service используют один и тот же статический класс (т. Е. singleton), получает ли служба в конечном итоге свою собственную «версию» класса?

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

Ответ №1:

Нет. Для ваших действий и служб создается единый процесс с единым унифицированным пространством памяти, поэтому у вашего статического класса будет только один экземпляр. Обратите внимание, что это поведение по умолчанию, и есть способы, например, запустить вашу службу в другом процессе. Тогда все ставки отменяются, и статические переменные почти наверняка не лучший путь для вашей реализации.

Комментарии:

1. верно, я читал, что сервис может находиться в отдельном процессе — этот случай особенно заинтересовал меня.

2. Ключевой момент: может быть в отдельном процессе. Но вы должны явно настроить его в манифесте, чтобы включить его.

3. давайте посмотрим, каков ответ … thinkandroid.wordpress.com/2010/01/29 /…

4. jwei512 в этом блоге WordPress, по-видимому, не активен, поэтому я пока отмечу это как решенное. Обратите внимание, что я поместил кучу констант в статический класс, и служба в отдельном процессе смогла получить доступ к этим константам.