通常,点击后退按钮时,我会调用finish()
,然后我会回到之前的activity
(这是我的MenuActivity):
@Override
public void onBackPressed() {
finish();
}
但是,有时单击后退按钮并且应用程序退出时,没有其他activities
正在运行。有没有办法可以检查activity
是否存在,或者是在后台/ 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()
}
}
答案 0 :(得分:0)
如果您知道要在onBackPressed()
中进行哪项活动,则可以使用FLAG_ACTIVITY_CLEAR_TOP
开始活动。如果实例存在,它将切换到MenuActivity
的实例,但它也会删除当前活动实例和MenuActivity
实例之间的所有活动实例。在另一种情况下,它只会启动一个新实例。
Intent intent = new Intent(context, MenuActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
答案 1 :(得分:0)
我认为,它可能会对您有所帮助
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)弃用了