2015-03-17 7 views
0

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

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

Когда я закрываю приложение, моя служба переднего плана продолжает работать и может доступ к синглтону. Есть ли риск того, что синглтон будет собирать мусор из-за давления памяти или есть ли какие-либо другие связанные с памятью риски использования одноэлементного в этом случае?

ответ

0

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

0
  1. Нет ничего плохого в отношении одиночных игр. Но, как и любой другой шаблон или метод, его можно было бы использовать ненадлежащим образом.
  2. Из-за давления памяти или по любой другой причине система может убить ваше приложение. Но ваш Service будет перезаписан позже.
+0

Мое обслуживание - ** обслуживание переднего плана **, что означает, что шансы его убить из-за давления памяти небрежны. Вопрос: однажды активность убита, есть ли шанс, что синглтон будет с ней? –

+0

@AlexandreG, если ваш синглтон каким-то образом связан с 'gc root', то' gc' буквально не может устранить ваш синглтон. Кажется, вы смешиваете gc и системные понятия. Система убивает процесс, но gc просто объекты без ссылок на 'gc root'. – eleven

+0

Будучи передним сервисом, вы не можете рассчитывать на столько, сколько вы думаете - их тоже можно убить, их просто убивают позже. На самом деле, я думаю, что большинство служб лежат и говорят, что они стоят на первом плане в наши дни. –

0
  1. Синглтон шаблон является очень полезным шаблон в системе благодаря тому, что это статический формат. Для координации действий по всей системе необходим один объект. Вам не нужно беспокоиться о дублировании или вы случайно создаете несколько модулей.
  2. Служба переднего плана - это сервис, который считается тем, что пользователь активно осознает (имеет фокус) и, таким образом, не является кандидатом на убийство системы при низком уровне памяти. Объект скелета не будет убит.