【发布时间】:2015-11-19 10:15:10
【问题描述】:
我正在我的应用程序中打开一个链接,一旦按下返回,我想显示主页以保留用户更多时间。我一直在努力实现这一点,但无法做到。我将 homeLauncher 活动作为我的 top 和 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();
}
我也试过 isTaskRoot 但结果是一样的。它没有给出正确的答案。请帮助
【问题讨论】:
-
@NoumanGhaffar :看看我的 topActivity 的图像名称与上次活动不同。它将启动器活动显示为 topActivity。这只发生在我来自深度链接时。这个问题是深度链接特有的。所以我已经尝试过同样的方法,但对我来说并没有成功。
-
您从任务列表中的第一个任务中获取活动计数(如果在新任务中开始,可能不是您的活动的任务)
-
你可以(如果一切都失败了),自己做一些工作来维护这个堆栈。在您的
Application类中添加一个堆栈(假设您确实有自己的Application类),并且每次在您的活动(全部)的onCreate上,将活动放入应用程序中的该堆栈和onDestroy(),弹出它们。这样您就可以检查实时活动的状态。
标签: android android-intent android-activity back-stack activity-manager