我的应用程序中的一项活动启动/绑定到服务(也是我的应用程序的一部分)。只要整个应用程序仍在前台,我希望该服务继续运行,无论哪个活动处于活动状态。但是我需要确保在整个应用程序暂停(主页按钮/返回按钮)时停止服务。
我怎样才能在应用程序级别而不是活动级别上做到这一点?
我的应用程序中的一项活动启动/绑定到服务(也是我的应用程序的一部分)。只要整个应用程序仍在前台,我希望该服务继续运行,无论哪个活动处于活动状态。但是我需要确保在整个应用程序暂停(主页按钮/返回按钮)时停止服务。
我怎样才能在应用程序级别而不是活动级别上做到这一点?
最简单的方法是使用一个单例来跟踪每个活动的状态,例如仅显示一个活动作为示例:
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 方法来找出每个活动的状态并决定做什么。