2016-03-03 3 views
0

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

Правильно ли это также ответ? Я думаю, что он должен работать - класс Singleton будет загружаться в память и останется навсегда; мой коллега предположил, что этот синглтон будет уничтожен с разрушенной деятельностью, потому что больше не будет никакой ссылки.

+1

Вы попробовали? – Erik

+7

Не обижайтесь, но с этими неопределенностями, почему вы проводите собеседование. – Mike

+3

Почему вы интервьюируете людей, если не знаете основ? –

ответ

5

Это также правильный ответ?

ИМХО, №.

Singleton класс будет нагрузка на память и останется в памяти навсегда

Processes get terminated No. когда они не находятся на переднем плане больше, чтобы освободить системную память для других приложений. Определение точно, когда это происходит, основано на множестве переменных ... один из которых: есть ли у вас работа Service.

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

No. Один синглтон в Java реализован как поле static. Пока это поле имеет ссылку на объект, объект не может быть собран в мусор. По умолчанию просто уничтожение активности не будет волшебным образом установить это поле static на null.

0

Единственный способ создать фоновое задание, которое препятствует уничтожению контекста приложения, - run a Service in the foreground, отображая постоянное уведомление, информирующее пользователя о его запуске. Пример, приведенный более или менее точно, что вы просили кандидат предоставить:

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

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

Смежные вопросы