2012-09-24 43 views
0

我有我的應用程序,這需要從應用程序有些獨立的小部件。意圖國旗在Android

活性工作流應該是這樣的:

窗口小部件 - >活動充當接收機

接收機 - > LoginPage或活性的(取決於登錄狀態)

LoginPage - >活動A

活動A onKeyDown - >活動B

活動B onKeyDown - >主屏幕。

我沒有問題,直到活動B,當我按下的onkeydown,它發送回活動A。我使用FLAG_ACTIVITY_CLEAR_TOP標誌和整理活動開始活動B.

當我從ActivityA移動使用CLEAR_TOP標誌ActivityB的時候,我假定活動堆棧被清除,然後在ActivityB我上完活動onKeyDown()方法,假設應用程序將被關閉,但它沒有。爲什麼?

我也試圖在接收器中使用FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK,但我不太瞭解這個機制。對此有何想法?

+1

那麼,有什麼問題被刪除? – nullpotent

+0

當活動A移動到活動B且頂部爲空時,活動堆棧應該清除。然後在Activity B中,我重寫onKeyDown並完成活動,所以我認爲它應該關閉應用程序,但它不會,活動A再次顯示。我想要應用程序在按下onKeyDown時關閉Activity B。 – JesusS

回答

1

其實FLAG_ACTIVITY_CLEAR_TOP,開始你的活動b。如果其未啓動或它回來作爲返回堆棧中的第二個活動。要完成活動A,可以在啓動活動B之後調用finish()或添加沒有歷史標誌,開始A.

+0

那是我需要的旗幟。謝謝! – JesusS

1

@JesusS的時候,我懷疑u能正向過渡期間,在時尚完成UR活動。

考慮從Activity A to Activity B移動的場景。現在,如果u想殺死Activity A並想搬到Activity B然後調用startActivity(intent); (其中UR從activity A to B移動) 而對意圖其次finish()activity A任何標誌。

按我的理解ü只能在落後的轉變即使用Intent.FLAG_ACTIVITY_CLEAR_TOP當u已經在堆棧上的活動。

考慮以下情形:

A --> B --> C --> D 

現在如果u想通過清除活動ü可以去Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP移動從活動d回到活動A。

的結果是,活動d,C,B(LIFO)將從堆棧和activity A簡歷通過調用活動A的onResume()