Эта служба умрет, когда активность будет уничтожена?

У меня есть собственный класс, который проверяет условия, а затем запускает MyService, иначе он просто ничего не делает, если условия ложны. Экземпляр моего пользовательского класса создается в MainActivity приложения.

Внутри MyService: onStartCommand: возвращает липкое, onCreate: будет создан новый поток, в этом потоке внутри исполняемого будут выполняться другие действия, такие как создание новых потоков, асинхронные задачи и т. д. Службе нечего делать. сделать пользовательский интерфейс, кроме уведомлений.

Существуют ли какие-либо другие способы смерти MyService, за исключением того, что пользователь убивает его или системе не хватает памяти?


person Community    schedule 16.08.2014    source источник
comment
stopSelf, это то, что вы имеете в виду?   -  person pskink    schedule 16.08.2014
comment
почему и как этот метод вызывается?   -  person    schedule 16.08.2014
comment
Есть ли другие способы смерти MyService, поэтому stopSelf убивает вашу службу   -  person pskink    schedule 16.08.2014
comment
Но я никогда не вызываю stopSelf.   -  person    schedule 16.08.2014
comment
Как насчет START_NOT_STICKY?   -  person cYrixmorten    schedule 16.08.2014
comment
Это не заставит службу снова запускаться, когда она убита.   -  person    schedule 16.08.2014
comment
Просто запустить его при старте приложения, потом оно запускается и умирает вместе с приложением, насколько я понимаю.   -  person cYrixmorten    schedule 16.08.2014
comment
Вы также можете использовать stopService, когда уничтожаете свою активность или когда считаете это нужным.   -  person zozelfelfo    schedule 16.08.2014


Ответы (1)


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

Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
        System.currentTimeMillis());
Intent notificationIntent = new Intent(this, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, getText(R.string.notification_title),
        getText(R.string.notification_message), pendingIntent);
startForeground(ONGOING_NOTIFICATION_ID, notification);

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

Перейдите по этой ссылке для получения дополнительной информации http://developer.android.com/guide/components/services.html#Foreground

person Harry    schedule 22.08.2014