Android:检测整个应用程序(不是单个活动)何时暂停/退出?

时间:2012-02-01 16:40:04

标签: android android-activity onpause

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

我如何在应用程序级别而不是活动级别上执行此操作?

1 个答案:

答案 0 :(得分: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方法查找每个活动的状态并决定要做什么。