Android如何区分后台应用程序和后台活动?

时间:2011-08-31 17:45:51

标签: android

有没有办法在背景和背景中的特定活动中获得应用的不同事件?

换句话说,当任何活动进入后台调用的onPause()方法时,有没有找到整个应用程序转到后台?

Manifest文件是否有任何设置可以在应用程序转到后台时关闭它。

谢谢,

AndroidIT

3 个答案:

答案 0 :(得分:2)

确定应用程序是否在后台:

有一种更简单的方法:

在所有活动扩展的 BaseActivity上:

protected static boolean isVisible = false;

 @Override
    public void onResume()
    {
        super.onResume();
setVisible(true);
}


 @Override
    public void onPause()
    {
        super.onPause();
setVisible(false);
}

每当您需要检查您的应用程序活动是否在前台时,只需检查isVisible();

要了解此方法,请查看并排活动生命周期的答案:Activity side-by-side lifecycle

如果您希望在应用程序转到后台时将其终止,您有以下几种选择:

  1. 像这样:Remove or close your own Activity window from a Status Bar Notification Intent根据你的需要进行修改。
  2. 探索:android:finishOnTaskLaunchandroid:excludeFromRecents以及如何制作逻辑以实现此效果(已经完成)

答案 1 :(得分:0)

我认为您的所有活动都是由您应用中的其他活动启动的。如果是这种情况,也许您的活动可以设置标志,表明它正在启动活动。然后,当调用onpause()时,此标志将确定应用程序是移动到后台还是仅启动下一个活动。

答案 2 :(得分:0)

在共享首选项中保存每个活动的状态。每个活动在首选项文件中都需要自己的字段。每次onResumeonPause时,请更新正确的偏好。

或:每当您onResumeonPause通过意图 X 活动暂停/恢复时向服务发送通知。该服务将以这种方式跟踪应用程序状态