android - 如何查找 Activity 是否是堆栈中的最后一个 Activity

标签 android android-intent android-activity back-stack activity-manager

我正在我的应用程序中打开一个链接,一旦按下返回键,我想显示主页以保留用户更多时间。我一直在努力实现这一目标,但无法做到。我将 homeLauncher Activity 作为我的首要 Activity 以及 baseActivity。

DeepLink Tap > 打开所需的 Activity > 用户按下后退按钮 > 检查它是否是最后一个 Activity 而不是 homeActivity > 如果是,将用户导航到 homeActivity。

尝试了以下代码:

@Override
public void onBackPressed() {
ActivityManager mngr = (ActivityManager) getSystemService( ACTIVITY_SERVICE );
List<ActivityManager.RunningTaskInfo> taskList = mngr.getRunningTasks(10);

if(taskList.get(0).numActivities == 1 && taskList.get(0).topActivity.getClassName().equals(this.getClass().getName())){
  //// This is last activity
}
else{
    //// There are more activities in stack
}

super.onBackPressed();
}

Android Studio Evalation

我也试过 isTaskRoot 但结果是一样的。它没有给出正确的答案。请帮忙

最佳答案

使用 isTaskRoot() 方法。 (来自 h9kdroid 评论 - here )

@Override
public void onBackPressed() {
   ActivityManager mngr = (ActivityManager) getSystemService( ACTIVITY_SERVICE );
   List<ActivityManager.RunningTaskInfo> taskList = mngr.getRunningTasks(10);

   if(isTaskRoot()){
     //// This is last activity
   } else{
     //// There are more activities in stack
   }

   super.onBackPressed();
}

关于android - 如何查找 Activity 是否是堆栈中的最后一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33800948/

相关文章:

android - 如何使用 Intent 选择文件浏览器来选择文件

android - 我不想要一个以上的 Activity 实例

android - 如何在没有关闭先前 Activity 的情况下从通知中打开对话框样式的 Activity ?

android - 按下后退按钮后如何刷新以前的 Activity ?

android - 如何摆脱 ListView 布局中的黑行

java - 如何在 Android 中使用 facebook api 注销

当 targetSdkVersion 为 29 时,Android Lint 报告 OldTargetApi

android - 显示具有不同格式条目的 ListView

android.intent.action.BATTERY_OKAY 在广播接收器中不起作用,在广播接收器中该怎么办?

android - 从 android 启用/启动 'Google Setting for Location'