1

我的应用程序中的一项活动启动/绑定到服务(也是我的应用程序的一部分)。只要整个应用程序仍在前台,我希望该服务继续运行,无论哪个活动处于活动状态。但是我需要确保在整个应用程序暂停(主页按钮/返回按钮)时停止服务。

我怎样才能在应用程序级别而不是活动级别上做到这一点?

4

1 回答 1

1

最简单的方法是使用一个单例来跟踪每个活动的状态,例如仅显示一个活动作为示例:

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 方法来找出每个活动的状态并决定做什么。

于 2012-02-01T17:18:36.993 回答