我的应用程序中的一个活动开始/绑定到服务(也是我的应用程序的一部分)。我希望该服务能够继续运行,只要整个应用程序仍处于前台,无论哪个活动处于活动状态。但我需要确保在整个应用程序暂停时服务停止(主页按钮/后退按钮)。
我如何在应用程序级别而不是活动级别上执行此操作?
答案 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方法查找每个活动的状态并决定要做什么。