Android: определить, когда приложение в целом (не отдельные действия) приостановлено / закрыто? - PullRequest
1 голос
/ 01 февраля 2012

Одна из Активностей в моем приложении запускается / привязывается к сервису (также является частью моего приложения).Мне бы хотелось, чтобы эта служба продолжала работать, пока приложение в целом все еще находится на переднем плане, независимо от того, какая активность активна.Но мне нужно убедиться, что служба остановлена, когда приложение в целом приостановлено (кнопка «Домой» / «Назад»).

Как я могу сделать это на уровне приложения, а не на уровне активности?

1 Ответ

1 голос
/ 01 февраля 2012

Самый простой способ - это иметь синглтон, который отслеживает состояние каждого действия, например, показывая только одно действие в качестве примера:

public class ActivityStates {

    private static  ActivityStates  ref = null;
    private static int firstAct     = ACTIVITY_GONE;

    public static synchronized  ActivityStates getInstance() {
        if (ref == null) {
            ref = new ActivityStates();
        }
        return ref;
    }

    public int getFirstAct() {
        return firstAct;
    }

    public void setFirstAct(int arg) {
        this.firstAct = arg;
    }
}

.. и определите некоторые статические константы, которые вы можете импортировать

public static final int ACTIVITY_GONE       = 0;
public static final int ACTIVITY_BACKGROUND = 1;
public static final int ACTIVITY_FOREGROUND = 2;

тогда в каждом упражнении есть метод

private void setActivityState(int state){
        ActivityStates as = ActivityStates.getInstance();
        as.setFirstAct(state);
}

Затем в ваших onResume (), onPause, onDestroy () вы можете установить состояние активности при вводе этих методов, например, в onResume есть

setActivityState(ACTIVITY_FOREGROUND)

в onDestroy () есть

setActivityState(ACTIVITY_GONE)

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

...