按下后退按钮时如何检查现有活动
How to check for existing activities when back button pressed
一般情况下,当点击后退按钮时,我调用finish()
,我被带回之前的activity
(这是我的MenuActivity):
@Override
public void onBackPressed() {
finish();
}
但是,有时当单击后退按钮时没有其他 activities
运行 并且应用程序只是退出。有没有一种方法可以检查 activity
是否存在或 运行 处于 background/in onPause
状态等...
我想写这样的东西:
@Override
public void onBackPressed() {
if(isActivitiesInStack) //if there are still activities in stack
finish(); //simply call finish and be taken back to next activity
else { // else, there are no acitivites in the stack
Intent intent = new Intent(ThisActivity.this, MenuActivity.class); // then create an intent and send me to the menu acitivy
startActivity(intent);
finish()
}
}
如果您知道 activity 想进入 onBackPressed()
,您可以用 FLAG_ACTIVITY_CLEAR_TOP
开始 activity。如果实例存在,它将切换到 MenuActivity
的实例,但它也会删除当前 activity 实例和 MenuActivity
实例之间的所有 activity 实例。在另一种情况下,它只会启动一个新实例。
Intent intent = new Intent(context, MenuActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
我想,可能对你有帮助
public boolean isRunning(Context ctx) {
ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
for (RunningTaskInfo task : tasks) {
if (ctx.getPackageName().equalsIgnoreCase(task.baseActivity.getPackageName()))
return true;
}
return false;
}
无论如何,此方法已被弃用 Android API 21 (Lollipop)
一般情况下,当点击后退按钮时,我调用finish()
,我被带回之前的activity
(这是我的MenuActivity):
@Override
public void onBackPressed() {
finish();
}
但是,有时当单击后退按钮时没有其他 activities
运行 并且应用程序只是退出。有没有一种方法可以检查 activity
是否存在或 运行 处于 background/in onPause
状态等...
我想写这样的东西:
@Override
public void onBackPressed() {
if(isActivitiesInStack) //if there are still activities in stack
finish(); //simply call finish and be taken back to next activity
else { // else, there are no acitivites in the stack
Intent intent = new Intent(ThisActivity.this, MenuActivity.class); // then create an intent and send me to the menu acitivy
startActivity(intent);
finish()
}
}
如果您知道 activity 想进入 onBackPressed()
,您可以用 FLAG_ACTIVITY_CLEAR_TOP
开始 activity。如果实例存在,它将切换到 MenuActivity
的实例,但它也会删除当前 activity 实例和 MenuActivity
实例之间的所有 activity 实例。在另一种情况下,它只会启动一个新实例。
Intent intent = new Intent(context, MenuActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
我想,可能对你有帮助
public boolean isRunning(Context ctx) {
ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
for (RunningTaskInfo task : tasks) {
if (ctx.getPackageName().equalsIgnoreCase(task.baseActivity.getPackageName()))
return true;
}
return false;
}
无论如何,此方法已被弃用 Android API 21 (Lollipop)