0

在我的应用程序中,有几种情况我应该知道哪些活动对用户可见。

  • 是否有让用户看到当前活动的功能?

现在我正在做的是创建一个带有静态变量的类,例如

布尔静态 mainActivityIsVisible = false;

在 onResume() 和 onPause() 内的真/假之间切换;因此,其他活动可以检查此变量以找出答案。

Does the same apply to check if an activity is stopped or destroyed ? Or is there a way to check the activities from the stack of the app ?

最后

How can I find that the last activity's onDestroy() was called. My objective from this is to find out if the app has totally exited and does not have any activities running, nor is minimized. 

这个问题可以改写为

How can I know my activity is not running."

How can I know my activity is running but not visible to the user ?
4

1 回答 1

2

你可以使用这个:

1)我怎么知道活动是否正在运行?

class MyActivity extends Activity {
     static boolean active = false;

      @Override
      public void onStart() {
         super.onStart();
         active = true;
      } 

      @Override
      public void onStop() {
         super.onStop();
         active = false;
      }
}

2)如何检查活动是在前台还是在可见背景中?

public class MyApplication extends Application {

  public static boolean isActivityVisible() {
    return activityVisible;
  }  

  public static void activityResumed() {
    activityVisible = true;
  }

  public static void activityPaused() {
    activityVisible = false;
  }

  private static boolean activityVisible;
}

在 AndroidManifest.xml 中注册您的应用程序类:

<application
    android:name="your.app.package.MyApplication"
    android:icon="@drawable/icon"
    android:label="@string/app_name" >

将 onPause 和 onResume 添加到项目中的每个 Activity(如果您愿意,您可以为您的 Activity 创建一个共同的祖先,但如果您的 Activity 已经从 MapActivity/ListActivity 等扩展,您仍然需要手动编写以下内容) :

@Override
protected void onResume() {
  super.onResume();
  MyApplication.activityResumed();
}

@Override
protected void onPause() {
  super.onPause();
  MyApplication.activityPaused();
}

在您的 finish() 方法中,您想使用 isActivityVisible() 来检查活动是否可见。在那里,您还可以检查用户是否选择了一个选项。满足两个条件时继续。

于 2013-10-24T09:01:20.043 回答