2014-02-11 29 views
0

我在我的應用程序中有一個登錄系統,並且我想這樣做是爲了在用戶登錄到他們的賬戶後退棧得到清除,因此他們看不到日誌在活動中,除非他們點擊主要活動中的註銷按鈕。我怎麼做到這一點?如何在意圖加載時清除後端堆棧

任何幫助將不勝感激。

回答

2

使用finish()方法在意圖之後破壞您的登錄活動。它也會從堆棧中刪除。

Intent i = new Intent(this, YourAccountActivity.class); 
startActivity(i); 

// destroying your current activity 
finish(); 

如果你不想把這個活動在棧中,您還可以使用

android:noHistory="true"AndroidManifest.xml

當您更改活動,這個活動將不會在疊加。

值爲「true」表示該活動不會留下歷史跡線 。它不會保留在任務的活動堆棧中,因此 用戶將無法返回到該堆棧。

另一種選擇是使用IntentFlags。

Intent i = new Intent(this, YourAccountActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(i); 
+0

首先感謝您的快速回復。我非常感謝幫助。我確實有一個問題:如果我在主要活動之前有兩項活動,並且我想同時清除兩項活動,該怎麼辦? –

+0

我已經編輯了我對你評論的回覆 –

+0

非常感謝!這超越... ...非常感謝。我現在覺得自己對背板有很好的理解。 –

1

如果您想要在同一時間手動完成兩個活動,那麼您可以使用ApplicationContext類並在該定義中。

MyApplicationClass.java

public Activity homeActivity = null; 
public Activity otherActivity = null; 

,當你開始Homeactivity你可以做的onCreate()方法:

HomeActivity.java

private MyApplicationClass myApplication = null; 

    myApplication = (MyApplicationClass)getApplicationContext(); 

    myApplication.homeActivity = HomeActivity.this; 

同在otheractivity的onCreate()方法:

其他項目.java

private MyApplicationClass myApplication = null; 

     myApplication = (MyApplicationClass)getApplicationContext(); 

     myApplication.otherActivity = otheractivity.this; 

而當你想在同一時間完成Homeactivity和otheractivity然後 就可以完成這樣的方式..

myApplication.homeActivity.finish(); 
myApplication.otherActivity.finish(); 
+0

非常感謝您的幫助。對此,我真的非常感激。 –