在我的应用中,有几种情况我应该知道哪些活动对用户可见。
- 是否有能够让用户看到当前活动的功能?
现在我正在做的是使用静态变量创建一个类,例如
boolean static mainActivityIsVisible = false;
在onResume()和onPause()中切换true / false; 因此,其他活动可以检查这个变量以找出答案。
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 ?
答案 0 :(得分: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(如果您愿意,可以为您的活动创建一个共同的祖先,但如果您的活动已经从MapActivity / ListActivity等扩展,您仍需要编写以下内容手工):
@Override
protected void onResume() {
super.onResume();
MyApplication.activityResumed();
}
@Override
protected void onPause() {
super.onPause();
MyApplication.activityPaused();
}
在finish()方法中,您希望使用isActivityVisible()来检查活动是否可见。在那里,您还可以检查用户是否选择了选项。在满足两个条件时继续。