【问题标题】:Android: Detect when an application as a whole (not individual Activities) is paused/exited?Android:检测整个应用程序(而不是单个活动)何时暂停/退出?
【发布时间】:2012-02-01 16:40:04
【问题描述】:

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

如何在应用程序级别而不是 Activity 级别执行此操作?

【问题讨论】:

    标签: android android-activity onpause


    【解决方案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 have

    setActivityState(ACTIVITY_FOREGROUND)
    

    在 onDestroy() 中有

    setActivityState(ACTIVITY_GONE)
    

    然后在你的服务中,或者你想要的任何地方,你都可以使用 get 方法来找出每个活动的状态并决定做什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      相关资源
      最近更新 更多