Android Сервис keep alive

У меня есть небольшое приложение чат. Когда он запускается, он привязывается к службе. Эта служба имеет tcp / ip-соединение с сервером.

когда приложение не на переднем плане моя служба создает уведомление о состоянии. Пока все хорошо.

когда приложение уничтожается, например, с помощью Диспетчера задач по методу "onDestroy", я вызываю unbind. Теперь служба убита. Поэтому мой вопрос в том, как я делаю услугу, чтобы остаться в живых, даже если нет клиентов он.

Googe doc: "служба будет работать до тех пор, пока соединение установлено (независимо от того, сохраняет ли клиент ссылку на IBinder службы)."

Thanl вы.

3 ответов


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



Если вы хотите сохранить свою службу, даже если ваша активность связующего уничтожена, вы можете сначала запустить свою службу в Activity, а затем вызвать bindService:

startService(serviceIntent);

bindService(serviceIntent, connection, Context.BIND_AUTO_CREATE);