Альтернатива остановки службы в 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.

Другие вопросы по тегам