2015-03-16 4 views
1

Я работаю над Android-приложением, и мне нужно знать, когда ОС убила процесс, поэтому я могу сделать HTTP-запрос на моем сервере. Я попытался запустить службу и поместить запрос в метод onDestroy(), но служба останавливается только тогда, когда я убиваю ее вручную (с помощью START_STICKY). Когда я использую START_NOT_STICKY, сервис заканчивается приложением, но он не выполняет метод onDestroy().Выполнить метод, когда процесс приложения Android завершен

Мой манифест выглядит следующим образом:

<service 
android:name=".CheckSessionEndService" 
android:enabled="true" 
android:exported="false" > 
</service> 
+0

Что вы имеете в виду под «Android процесса приложения» и «когда убили OS процесс"? – Squonk

ответ

0

Когда процесс убит, это действительно исчезло. Вы больше ничего не можете выполнить. onDestroy() вызывается после того, как ваша служба остановлена, либо stopService(), либо stopSelf() (и Служба не связана), но это не обязательно означает, что процесс был убит. Если вы беспокоитесь о пользователе проводя приложение из списка недавних можно попробовать

http://developer.android.com/reference/android/app/Service.html#onTaskRemoved(android.content.Intent)

или

http://developer.android.com/reference/android/content/pm/ServiceInfo.html#FLAG_STOP_WITH_TASK

+0

Да, этого я боялся. Итак, ближе всего к этому я могу использовать метод onTaskRemoved()? –

+0

Я никогда не использовал его сам, но похоже, что это ваш лучший вариант. Он доступен только на уровнях api 14+. Конечно, это совсем не поможет вам, если ваш процесс убит по какой-то другой причине. –

+0

О, я вижу. Спасибо за вашу помощь! –

0

OnDestroy() не всегда звала, если система убивает приложение. Вы должны назвать свой метод в нескольких местах - как в onDestroy, так и onStop(), а также в onRetainNonConfigurationInstance(). Но onStop() имеет больше шансов называться, если системе нужно освободить memmory, а не onDestroy().

+0

Нет onStop() на службе –

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