生命周期的學習:
1、onCreate 在建立應用程式時建立
2、onTerminate 當終止應用程式對象時調用,不保證一定被調用,當程式是被核心終止以便為其他應用程式釋放資源,那
麼将不會提醒,并且不調用應用程式的對象的onTerminate方法而直接終止進 程
3、onLowMemory 當背景程式已經終止資源還匮乏時會調用這個方法。好的應用程式一般會在這個方法裡面釋放一些不必
要的資源來應付當背景程式已經終止,前台應用程式記憶體還不夠時的情況。
4、onConfigurationChanged 配置改變時觸發這個方法
備注:application 被殺死的情況分析:
為了決定在記憶體較低的時候殺掉哪個程序, Android會根據運作在這些程序内的元件及他們的狀态把程序劃分成一個”重要程度層次”. 其重要的程度按以下規則排序:
1:前端程序可以是一個持有運作在螢幕最前端并與使用者互動的Activity的程序(onResume方法被調用時),也可以是持有一個正在運作的IntentReceiver(也就是說他正在執行自己的onReceiveIntent方法)的程序. 在系統中, 隻會有少數這樣的程序, 并且除非記憶體已經低到不夠這些程序運作, 否則系統不會主動殺掉這些程序. 這時, 裝置通常已經達到了需要記憶體整理的狀态, 是以殺掉這些程序是為了不讓使用者界面停止響應.
2:可視程序是持有一個被使用者可見, 但沒有顯示在最前端 (onPause方法被調用時) 的Activity的程序. 舉例來說, 這種程序通常出現在一個前端Activity以一個對話框出現并保持前一個Activity可見時. 這種程序被系統認為是極其重要的, 并且通常不會被殺掉, 除非為了保持所有前端程序正常運作不得不殺掉這些可見程序.
3:服務程序是持有一個Service的程序, 該Service是由startService()方法啟動的, 盡管這些程序使用者不能直接看到, 但是通常他們做的工作使用者是十分關注的(例如, 在背景播放mp3或是在背景下載下傳 上傳檔案), 是以, 除非為了保持所有的前端程序和可視程序正常運作外, 系統是不會殺掉服務程序的.
4:背景程序是持有一個不再被使用者可見的Activity(onStop()方法被調用時)的程序. 這些程序不會直接影響使用者體驗. 加入這些程序已經完整的,正确的完成了自己的生命周期(通路Activity檢視更多細節), 系統會在為前三種程序釋放記憶體時随時殺掉這些背景程序. 通常會有很多的背景程序在運作, 是以這些程序被存放在一個LRU清單中, 以保證在低記憶體的時候, 最近一個被使用者看到的程序會被最後殺掉.
5:空程序是沒有持有任何活動應用元件的程序. 保留這種程序的唯一理由是為了提供一種緩存機制, 縮短他的應用下次運作時的啟動時間. 就其本身而言, 系統殺掉這些程序的目的是為了在這些空程序和底層的核心緩存之間平衡整個系統的資源.
當需要給一個程序分類的時候, 系統會在該程序中處于活動狀态的所有元件裡掉選一個重要等級最高作為分類依據. 檢視Activity, Service,和IntentReceiver的文檔, 了解每個元件在程序整個生命周期中的貢獻. 每一個classes的文檔較長的描述他們在各自應用的生命周期中所起得作用.