2014-02-16 167 views
0

我有3項活動: MainActivity,MovieActivity和ActorActivity。Android活動來回切換

我是新來的Android,我試圖瞭解如何通過確保我不開始n個活動並耗盡內存來實現每個活動之間的轉換。

下面是這種情況,用戶可以通過去:

MainActivity(列表電影)---> MovieActivity開始上點擊一個電影和演員顯示,如果你點擊一個演員---> ActorActivity開始。

現在,在演員活動中,我顯示演員出演的電影列表,因此用戶可能會回到他來到當前演員活動的同一部電影。而且這可以持續不斷地來回或基本上在電影和演員活動之間進行切換。

我已經將MovieActivity和ActorActivity的父級活動設置爲MainActivity,因此隨時按下UP按鈕將列出所有電影。

處理這種情況的最佳方法是什麼?當用戶點擊返回按鈕時,我不確定如果後面的軌跡是MovieA < - > ActorA來回像10次那樣理想的行爲。

回答

0

您可以在後退按鈕上使用以下代碼。

@Override 
     public void onBackPressed() { 

      Intent i = new Intent(currentactivity, targaetactivity); 
      startActivity(i); 
     } 
0

您可以手動存儲歷史記錄,並找到有意義的等待返回,例如,回到前一個屏幕,除非你有MovieA/ActorA/MovieB/ActorB的循環。然後手動實現onBackPressed方法。 通過這種方式,當您切換到另一個時,您總是可以完成活動,而您只需將堆棧中的活動參數存儲起來。

0

當您轉換到新的詳細信息頁面並將其作爲額外的新活動傳遞給新活動時,您可以跟蹤以前的細節(即:從Actor - > Movie時,您應該將Actor的名稱傳入意圖額外)。然後,如果用戶想要從電影頁面轉換到演員頁面,您可以比較它是否與前一個演員相同(在額外中傳遞的演員)。如果是這樣,您可以撥打finish(),而不是啓動一個新的活動,這會將用戶返回到上一個Actor詳細信息頁面。

通過這種方式,您將防止產生無意義的循環(A-> B-> A-> B)位仍然允許用戶從A-> B-> D-> E-> T-> Q if他想要。

+0

感謝大衛,這似乎是合乎邏輯的,可能是我走的最佳途徑。我會執行它,看看它是如何發展。在相關說明中,可以繼續使用意向開始新的活動,而不是消耗越來越多的內存嗎?有沒有一種簡單的方法可以讓我隨着時間檢查我的應用程序的內存使用情況?例如,正如你所提到的,如果用戶進行A-> B-> D-> E-> T-> Q說100個關卡,那麼後面的堆棧會保持如此深的關卡嗎?(例如,如果我打回100次我應該回到MainActivity A)。我應該記住任何性能考慮因素?感謝您的幫助! – falc0nit3

+0

每次創建新的活動實例時,都會消耗內存。在很大程度上取決於你如何編程它以及你在視圖中擁有什麼。您可以使用'Debug'類中的各種方法來跟蹤您的內存使用情況。是的,後臺堆棧會跟蹤100個級別或更多的活動,但在這種情況下,您最終可能會消耗太多內存,並且您的應用只會崩潰。你可能更有意義地自己管理這個「後退堆棧」,而不是繼續無限地創建新的Activity實例。 –