【发布时间】:2013-05-04 22:09:55
【问题描述】:
我遇到了一个问题 - 清除活动历史记录。我的问题出现的地方有以下后果:
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}
// Guest Activity(B) 调用 UserActivity(C):
Intent { flg=0x10000000 cmp=/.activities.SplashActivity }
Hist #3: ActivityRecord{415c86f0 /.activities.UserActivity}
Intent { cmp=/.activities.UserActivity }
ProcessRecord{414fdf60 15651:/10103}
//按Home键再次启动应用(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。
【问题讨论】:
-
不清楚。当您按下主页按钮时,当前活动暂停并导航到主屏幕developer.android.com/guide/components/…
-
我只需要在应用再次启动时清除所有历史记录或任务,堆栈中不会有任何以前保存的活动。
-
当您有 clearTaskOnLaunh 用于根活动时,您在哪里启动您的应用程序?是根活动吗?
-
是的。我试图将它设置为 A 但根本没有结果,就好像它根本不起作用(我很困惑,为什么?)。
-
你在哪里启动应用程序从家里或长按主页键?