Самый простой способ - это иметь синглтон, который отслеживает состояние каждого действия, например, показывая только одно действие в качестве примера:
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, чтобы узнать состояние каждого действия и решить, что делать.