2013-10-23 68 views
10

我想知道在所有活動onBackPressed()finish()函數中實施是否是個好主意?或者它不實際,甚至不好做?Android OnBackPressed finish()?

如果沒有,除了在每個活動中顯示和輸入SingleInstance(我認爲它使應用程序更慢)之外,還有哪些其他選項?

謝謝。

+1

'onBackPressed()'自動活動完成,直到我們不覆蓋它。 – SilentKiller

+0

SilentKiller是對的,[後面的堆棧作爲「後進先出」](http://developer.android.com/guide/components/tasks-and-back-stack.html) – AlexBcn

+0

@SilentKiller,didn我不知道。我很感激。 – user2902515

回答

10

首先硬件後退按鈕本身調用finish()方法。如果您在您的活動中定義onBackPressed()方法,則意味着您正在覆蓋backButton的默認行爲,因爲按下後退按鈕時會調用onBackPressed()方法。

現在是否創建單個活動實例取決於您的要求,例如,初始屏幕可以由單個實例組成,因爲它在應用程序啓動期間僅會顯示一次,並且不需要將此活動保留在背面堆棧中。您要經常使用的活動不應該是單一的實例,否則一個罕見的活動可能會成爲一個單一的實例。

請通過Back Stack Documentation瞭解完整信息。

標準和'singleTop'可以實例化多個活動實例,實例將保持在同一個任務中。 對於'singleTask'或'singleInstance',活動類使用單例模式,該實例將成爲新任務的根活動。

+0

有些人在打開Intents時使用標誌。這是一個很好的方式來做到這一點?如果是這樣,哪一個標誌應該適應我的需求?我不想打開多個活動,我經常看到他們留在後臺..消耗內存:\ – user2902515

+1

完全取決於您的要求。默認情況下,除非您使用標記手動刪除它們,否則處理器會將其從堆棧中刪除。 –

+0

我試圖在文檔中找到正確的標誌,但我無法弄清楚。我只想要標誌清除活動,如果它已經打開。我所看到的只是一面旗幟,它在開啓新的活動時會清除所有的活動。 – user2902515

0

這取決於您的應用需求,因爲我們經常使用finish() ,但您也可以管理android的生命週期。

更好使用暫停和恢復方法。