2012-12-10 59 views
0

我希望能夠在我的Android應用程序啓動時以及退出時執行某些邏輯。我明白在Android中並沒有這樣的概念,因爲每個活動都有自己的生命週期。Android:啓動和退出應用程序的邏輯

假設我有活動A,B,C & D和A是根活動。

應用程序啓動:

  • 我可以把邏輯onCreate()爲A,但在方向改變這也被稱爲(可能,如果內存不足),如果用戶點擊從活動B,C或D.

  • 我可以創建擴展Application一類,並把該邏輯在onCreate()Back鍵。我試過這個,但是onCreate()沒有在按下Home鍵的情況下調用,然後通過點擊主菜單中的相關圖標重新啓動應用程序。

申請退出:

  • 我可以把邏輯onStop()onDestroy()的所有活動,而我又需要能夠告訴如果這不是被稱爲的結果在我的應用程序中轉換到另一個活動。另外,當內存不足時,不能保證這些函數會被調用。

  • 我可以在所有活動中覆蓋onLeaveUserHint() - 這樣做有什麼缺點嗎?

編輯(由CommonsWare的要求):

「應用程序啓動」 - 我的應用程序啓動的解釋是,當他們沒有後顯示在我的活動活動之一當顯示時(例如,用戶在主菜單中點擊我的應用程序圖標)。

「應用程序退出」 - 我對應用程序「退出」的解釋是因爲用戶在顯示其中一個應用程序後故意留下活動而沒有顯示任何活動(例如,按下「 Home「鍵或」Back「鍵)。

(我希望這提供了一些澄清)。

+0

你是什麼意思的邏輯? – vodich

+0

我只想在應用程序啓動或退出時調用執行某些代碼(邏輯)的函數。 – Mewzer

+0

請考慮編輯您的問題來解釋,具體來說,您的意思是「退出」。例如,當用戶按下HOME時,您似乎認爲「退出」,並且應用程序在該情況下沒有通過任何常規的動詞「退出」定義「退出」。 – CommonsWare

回答

1

如果你需要把你的「邏輯學」的活動只有一次調用它的應用程序的啓動和退出時,你可以這樣做:

應用程序啓動時,您在共享偏好檢查是應用程序開始爲第一次 - 如果是的話 - >做你的邏輯,並保存在共享首選項,你完成。

當用戶完成應用後,可以重載onBackPressed(),做任何你喜歡的事情,並保存你需要的任何應用程序狀態,以便在應用程序再次啓動時再次調用你的「邏輯」。

這是你的想法?

+0

這聽起來幾乎就在那裏 - 也許我也可以截取Home鍵,如果我重寫onUserLeaveHint()(API級別3+)?或者你有這個方法的問題? – Mewzer

+0

另外,還有其他允許用戶退出應用程序的情況,例如在通知欄中單擊通知?。我不確定這是一個「全面」解決方案。 – Mewzer

+0

我不認爲你將能夠成功攔截HOME按鈕,至少我沒有看到任何文章,因爲你最終不應該這樣做,因爲應用程序的預期行爲是用戶習慣的東西,也有很多事情你可能無法截取(電話鈴聲等)。也許如果你解釋你打算做的邏輯,我們可以幫助你進一步 – vodich

相關問題