Альтернатива остановки службы в onDestroy() Activity Android
Я запускаю службу Android по startService()
в Деятельности А. У меня есть несколько действий в моем приложении. Здесь проблема с onDestroy()
деятельности.
То, что я делаю, это создание события в onDestroy()
деятельности. Класс приложения является подписчиком этого события, и я остановил этот сервис в классе приложения. я знаю onDestroy()
не гарантируется, что он будет вызываться каждый раз, когда приложение закрывается.
Мне также нужно, чтобы служба работала до запуска приложения. И каков наилучший способ остановки сервиса при закрытии приложения?
Я использую библиотеку otto для шины событий.
3 ответа
Реализуйте ActivityLifecycleCallbacks в своем Application
учебный класс:
public class MyApplication extends Application implements ActivityLifecycleCallbacks {
@Override
public void onCreate() {
super.onCreate();
// initialize anything application wide
// this is important, otherwise it won't work
registerActivityLifecycleCallbacks(this);
}
@Override
public void onActivityResumed(Activity activity) {
// your application is running, do something
}
@Override
public void onActivityPaused(Activity activity) {
// your application was closed, stop any service or something else.
}
}
Это лучший способ отслеживать жизненный цикл всего приложения.
Вы можете начать Service
в HeadlessFragment
и добавь это HeadlessFragment
в тебе activity
Пример реализации и понимания фрагмента без заголовка http://luboganev.github.io/blog/headless-fragments/
Надеюсь это поможет.
Вы можете использовать ActivityLifecycleCallbacks или TRIM_MEMORY_UI_HIDDEN в зависимости от ваших требований для определения видимости Activtys.