2013-01-20 162 views
0

後停止活動(S)我在我的代碼如下流程:機器人:開始服務

Activity1 : startActivity(Activity2) ---> 
      Activity2: startActivity(Activity3) ---> 
         Activity3: startService(MyService) ---> 
            MyService: startActivity(Activity4) 

每個活動以上示出了單個圖,並且表示在4個步驟設置的步驟。最後的活動 - Activity 4 - 一些設置工作裏面MyService,基本上告訴用戶完成之後開始,

"The service has started, you can close the application by pressing Back or Home button"

當用戶按下後退或家庭,我要摧毀Activities 1-4,只有具備MyService運行。此外,停止應用程序如上,當用戶通過菜單導航迴應用程序並啓動它後,我會檢查是否MyService已在運行。如果它已在運行,我不希望顯示Activities 1-3,我想告訴另一Control Panel View(另一項活動),它說,

"Dude, the service is already running, do you want to Stop or Restart it?"

這種觀點將有停止和重新啓動按鈕,做適當的任務。

我的問題:

  1. 如何停止活動1-4從內活動4時返回或主頁被按下時,安全?我的想法是爲static stopActivity()方法添加到每個活動,並呼籲從onBackPressed()Activity[1-3].stopActivity()onPause() Activity4。然後,每個stopActivity()裏面,我會打電話給finish(),從而結束了各活動。但以這種方式安全有效嗎?

  2. 我上面已經說明了流動,是做事的最佳方式,或者是有一個更清潔的方式?我有BroadcastReceivers在這些活動中註冊,所以我需要執行清理退出的每個活動,不泄露接收器,或者更糟,崩潰應用程序或影響用戶的手機由於不潔的退出策略。

感謝您的建議。

+0

有幾種可能的實現方法。爲了給你更好的答案,請指出用戶是否可以使用「BACK」鍵從「Activity3」 - >「Activity2」 - >「Activity1」。另外,如果用戶處於「Activity3」,「Activity2」或「Activity1」並按HOME鍵,會發生什麼情況。當他回到應用程序時,他應該從頭開始('Activity1')嗎?或者他是否應該回到他離開的活動。 –

回答

0
  1. 你不需要停止活動,Android會爲你做。使用標記FLAG_ACTIVITY_NO_HISTORY的意圖開始您的活動,以便在用戶按下後不會出現。這些活動將在用戶離開後立即停止。

  2. 在每個活動的onStop方法,寫出你想如果你想手動解除分配的東西釋放內存的任何代碼,雖然這不會是必要的,因爲Android將釋放它自己當設備內存短缺。在那些onStop方法中,取消註冊以前註冊的任何BroadcastReceiver