2013-02-18 44 views
0

這可能有點愚蠢的問題,但何時纔是Android生命週期的最佳部分來實施每一步?我的遊戲的流程如下:Android生命週期:每一步都應該發生

  1. 的onCreate前:遊戲開始時存儲在一個JSON文件中的數據被解析成字符串列表
  2. 的onCreate:產生基本UI
  3. 在onStart /的onResume :遊戲開始:從列表中隨機選擇的項目,用戶選擇相應項目以繼續
  4. 如果用戶是正確的,則從列表中選擇另一項目。發生10次
  5. 後10個項目,比賽結束,比分被顯示給用戶

這會被認爲是好的做法呢?我對生命週期步驟有點困惑

+0

你的活動之前,不能運行任何代碼,其Activity的onCreate()回調(我想你可以重寫默認的構造函數,但不建議大多數人使用)。如果您繼承Application,最早可以運行任何代碼的應用程序的onCreate()回調函數。 – Karakuri 2013-02-18 21:48:21

+0

對不起,我把JSON解析放入onCreate方法中。我只希望在應用程序的生命週期中發生這種情況 – adohertyd 2013-02-18 21:52:18

回答

1

This可能有助於更多地瞭解Android應用的生命週期。以下是從該站點引用的內容:

如上一節所述,活動的生命週期有4個狀態和3個 生命週期。如果你想監控並添加自己的代碼 邏輯到一個活動,你可以使用下面的7種基本回調 由android.app.Activity類提供的方法:

  • 的onCreate() - 調用時活動首先創建。這是您應該完成所有常規靜態設置的位置:創建視圖,將 數據綁定到列表等。此方法還會爲您提供包含活動先前凍結狀態(如果有的話)的捆綁包 。 onCreate()後面的onStart()始終跟着 。

  • onRestart() - 在 之後調用您的活動已停止,並且在再次啓動之前。 onRestart()後面的onStart()始終跟着 。

  • onStart() - 在 時調用該活動對用戶變得可見。 onStart()後面跟着 onResume(),如果活動來到前臺,或者onStop()如果 變得隱藏。

  • onResume() - 當活動開始時調用 與用戶進行交互。此時,您的活動位於活動堆棧的頂部 ,並且用戶輸入。 onResume()始終是 ,後面跟着onPause()。

  • onPause() - 當系統爲 時調用即將開始恢復先前的活動。這通常用於 將未保存的更改提交到持久數據,停止動畫和其他可能消耗CPU的事物等。此方法 的實現必須非常快速,因爲在此方法返回之前,下一個活動將不會恢復,直到 返回爲止。如果 活動返回到前面,則onPause()後跟onResume(),如果它變爲 對用戶不可見,則onStop()後跟onStop()。

  • 的onStop() - 當活動不 不再對用戶可見,因爲其他活動已恢復 並且覆蓋了這個叫。這可能是因爲新的 活動正在啓動,現有的活動正在被帶到此 的前面,或者這個活動正在被銷燬。 onStop()後面跟着 onRestart(),如果這個活動回來與 用戶交互,或者onDestroy()如果​​這個活動消失了。

  • onDestroy() - 在您的活動被銷燬之前收到的最終呼叫。這可能是因爲活動正在完成(有人稱爲 finish(),或者因爲系統暫時銷燬此活動的實例以節省空間,您可以使用isFinishing()將這兩個方案區分爲 方法。

+0

謝謝,這是對每個應用程序的清晰解釋。我一直在努力讓我的頭部圍繞一些官方文檔 – adohertyd 2013-02-18 21:53:25

0

你是如何的onCreate前預加載數據?你有沒有上下文對象與你的onCreate調用之前的應用程序文件系統的工作。這裏是Activity lifecycle文檔,你可以看到,的onCreate是第一種方法,你可以運行你的代碼。

我建議把數據加載到其他線程中,例如AsyncTask。

所以:

  1. 生成基本的用戶界面
  2. 啓動數據預加載NOT IN主線程
  3. 更新UI後加載數據