我將開始在下面的系列活動後:保持根系活力,甚至開始新的活動,清除背部棧
A-> B-> C-> d 現在我要開始另一項活動猜想E從D清除堆棧,但保留活動A作爲根活動。 啓動E後,堆棧應該是A-> E。我怎樣才能做到這一點?
我將開始在下面的系列活動後:保持根系活力,甚至開始新的活動,清除背部棧
A-> B-> C-> d 現在我要開始另一項活動猜想E從D清除堆棧,但保留活動A作爲根活動。 啓動E後,堆棧應該是A-> E。我怎樣才能做到這一點?
可以acheive與TaskStackBuilder。這個老兄讓你重建你需要的堆棧。您需要somethink這樣的:
final Intent activityAIntent = new Intent(this, ActivityA.class);
activityAIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
TaskStackBuilder.create(this)
.addNextIntent(activityAIntent)
.addNextIntent(new Intent(this, ActivityE.class))
.startActivities();
當您的開始活動E從D首先清除標記頂部或finishAffinity()。因此,您之前的所有活動都已關閉。並從背後開啓第一項活動。
在E Activity中添加OnBackPressed方法。
像這樣
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(getApplicationContext(), AActivity.class);
startActivity(intent);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
finishAffinity();
} else {
finish();
}
}
[Android的突然離開活動堆棧]的可能的複製(https://stackoverflow.com/questions/3517063/android-popping-off-the-activity-stack) – matoni
@ matoni這不重複。你提到的那個是告訴清除任務。在這裏,我問的是開始一個活動,並清除堆棧,但根活動應該在那裏。 – Aju