2013-05-10 166 views
0

我遇到过一个问题 - 清除活动记录。我有以下结果我的问题出现的地方:Android:清除活动历史记录

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和setting all intent flags to CLEAR_TOP and NEW_TASK几乎所有的活动,只有一个很奇怪的解决方案,但所有的活动都呈现一些奇怪的(不作为通常,我的意思是,首先,出现带有actionBar的空白黑屏,并且在〜1秒后出现我的真实布局),并且如我已经说过的那样稍微延迟。尽管所有事情都是正确的,并且结果正确,但我并不喜欢这个解决方案。现在,我试图在没有延迟和奇怪的黑屏的情况下正常工作。我试图玩意图标志,如CLEAR_TASK, CLEAR_TOP。试图在需要的地方使用clearTaskOnLaunh for root activity and finishOnLaunch in manifest file,并没有帮助。如何解决它?

编辑:

试图重新设置clearTaskOnLaunch至A。我看到,当启动应用程序第一次(A已经称为B不带任何标志)下一个日志:

Main stack: 
    TaskRecord{42610648 #869 A } 
    Intent { flg=0x10000000 cmp=/.activities.SplashActivity } 
     Hist #4: ActivityRecord{413cf8f8 /.activities.GuestActivity} 
     Intent { cmp=/.activities.GuestActivity } 
     ProcessRecord{414fdf60 15651:/10103} 

//游客的活动(B)调用UserActivity(C):

Intent { flg=0x10000000 cmp=/.activities.SplashActivity } 
    Hist #3: ActivityRecord{415c86f0 /.activities.UserActivity} 
    Intent { cmp=/.activities.UserActivity } 
    ProcessRecord{414fdf60 15651:/10103} 

//新闻主页按钮并再次启动应用程序(A称为B):

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} 

再次出现同样的问题,历史上的最后一次活动。如果我按回按钮,我会得到UserActivity。

+0

不清楚。当您按主页按钮当前活动暂停并导航到主屏幕http://developer.android.com/guide/components/tasks-and-back-stack.html – Raghunandan 2013-05-10 09:08:59

+0

我只需要清除应用程序启动时的所有历史记录或任务再次表明堆栈中不会有任何先前保存的活动。 – user1376885 2013-05-10 09:19:13

+0

当你有clearTaskOnLaunh用于根活动时,你在哪里启动你的应用程序?是根源活动吗? – 2013-05-10 09:21:21

回答

0

我不明白你的问题100%

我认为你正面临着活动堆栈和CLEAR_TOP问题

所以使用startActivityForResult,而不是startActivity

0

我们固定的方式它走的是一条静态布尔变量在不久的第一个活动.Say你的第一个活动是A,在一个声明变量如下

在所有活动的其余
public static boolean closeAllActivities=false; 

然后将其放置在的onResume()

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. 
0

看来我已经成功地修复它,但它仍然有点奇怪。我已经将launchMode = singleInstance设置为A和B活动。并调用任何没有任何标志的活动。活动召唤之间没有黑屏,延迟1秒。有点奇怪的解决方案,因为谷歌不建议在一般情况下使用singleInstance或singleTask,我认为这是一般性的。如果有人会找到更好的解决方案,欢迎您。

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

相关问题