我們知道SingleTask模式對於Activity的影響如下:
例如我們將Activity A設置為SingleTask模式,其他的Acitivity設置為Standard模式,則有以下效果:
A -> B -> C -> D 我們將Activity A一直跳轉到Activity D,如果此時D -> A,則會發生Activity B,C,D都會被pop出棧中Activity A則會顯示到棧頂。
我利用這個特性時,處理單端登錄:將將Activity A設置成SingleTask模式,並設置成啟動的Acitivity,
如果后台告知賬號在其他地方登錄了,則此時直接將跳轉Activity A即可,其他的Acitivity都會被pop出去。
現在問題就來了,我們將App的啟動的MainActivity設置為SingleTask模式時,如果我們在App跳轉到Activity B時,按下Home鍵,此時點擊App Icon,
此時不是顯示Activity B,還是直接會顯示Activity A,即是把A上面的Activity都會被pop出去,Activity A顯示到棧頂,但這不是我想要的。
問題描述:
My main activity A
has as set android:launchMode="singleTask"
in the manifest. Now, whenever I start another activity from there, e.g. B
and press the HOME BUTTON
on the phone to return to the home screen and then again go back to my app, either via pressing the app's button or pressing the HOME BUTTON
long to show my most recent apps it doesn't preserve my activity stack and returns straight to A
instead of the expected activity B
.
Here the two behaviors:
Expected: A > B > HOME > B
Actual: A > B > HOME > A (bad!)
如何處理呢:
Just remove the launchMode="singleTask"
and set FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP
flag whenever call an intent to A