Android:清除活动历史记录

Android:清除活动历史记录,android,stack,history,Android,Stack,History,我面临一个问题——清除活动历史记录。我的问题出现时会产生以下后果: A(SplashScreen)->B(GuestScreen)->C(Screen for signed users)->Press Home Button->A->B->Press Back Button->C->Press Back BUtton->B->Press Back Button->exit from the app. 我尝试了不同的方法来解决它,

我面临一个问题——清除活动历史记录。我的问题出现时会产生以下后果:

A(SplashScreen)->B(GuestScreen)->C(Screen for signed users)->Press Home Button->A->B->Press Back Button->C->Press Back BUtton->B->Press Back Button->exit from the app.
我尝试了不同的方法来解决它,在将几乎所有活动设置为singleInstance和
将所有意图标志设置为CLEAR_TOP和NEW_TASK
的过程中,我发现只有一个非常奇怪的解决方案,但所有活动都呈现出一些奇怪的问题(与正常情况不同,我的意思是,首先,出现带有actionBar的空黑屏,然后~1秒钟后出现我的真实布局)正如我已经说过的,有一点延迟。我不喜欢这个解决方案,尽管所有的东西都正确地关闭并且结果正确。现在,我正在尝试让它正常工作,而不出现这种延迟和奇怪的黑屏。我尝试使用意图标志,如
CLEAR\u TASK,CLEAR\u TOP
。尝试使用
clearTaskOn对于根活动和清单文件中的finishOnLaunch,Launh没有帮助,对于其他必要的地方,它也没有帮助。如何修复它

编辑:

再次尝试将clearTaskOnLaunch设置为A。我在第一次启动应用程序时看到下一个日志(A已经调用了B,但没有任何标志):

//来宾活动(B)调用用户活动(C):

//按Home(主页)按钮并再次启动应用程序(A已呼叫B):


同样的问题,历史上的最后一个活动。如果我按“后退”按钮,我将获得UserActivity。

我没有100%理解你的问题

我认为您正面临活动堆栈和CLEAR_TOP的问题


因此,请使用startActivityForResult而不是startActivity

我们修复它的方法是在第一个活动中立即使用一个静态布尔变量。假设您的第一个活动是a,在一个声明变量中,如下所示

public static boolean closeAllActivities=false;
然后在其余的所有活动中,将下面的代码放在onResume()中

以及您希望退出应用程序集的任何位置

A.closeAllActivities=true;//It exits all the activities one after other.

似乎我已经设法解决了这个问题,但仍然有点奇怪。我已经将launchMode=singleInstance设置为a和B活动。并且调用任何没有任何标志的活动。活动调用之间没有黑屏,延迟1秒。这是一个有点奇怪的解决方案,因为谷歌不建议在一般情况下使用singleInstance或singleTask,我认为nk这是一般性的。如果有人能找到更好的解决方案,欢迎你

更新:
当通过IDE构建和启动apk时,还有一件非常重要的事情。某些IDE启动应用程序错误地看到。由于它,堆栈行为可以更改。

不清楚。当您按下主页按钮时,当前活动暂停并导航到主屏幕,我只需在应用程序再次启动时清除所有历史记录或任务,即不会有任何以前保存的操作堆栈中的ivities。当您有clearTaskOnLaunh for root活动时,您在哪里启动应用程序?是一个root活动吗?是的。我尝试将其设置为一个结果,但根本没有结果,就好像它根本不工作一样(我很困惑,为什么?)。您在哪里从主页或长按home键启动应用程序?
    TaskRecord{42610648 #869 A cashongo.app.peachy}
Intent { flg=0x10000000 cmp=c/.activities.SplashActivity }
  Hist #5: ActivityRecord{42127398/.activities.GuestActivity}
    Intent { cmp=/.activities.GuestActivity }
    ProcessRecord{414fdf60 15651:/10103}
  Hist #4: ActivityRecord{415c86f0 /.activities.UserActivity}
    Intent { cmp=/.activities.UserActivity }
    ProcessRecord{414fdf60 15651:/10103}
public static boolean closeAllActivities=false;
protected void onResume() {
super.onResume();
if(A.closeAllActivities)
{       
    finish();   
}
else
{
    // TODO your requirement inside onResume
}
      }
A.closeAllActivities=true;//It exits all the activities one after other.