最近這幾篇咱們主要講的都是Activity,由初步到深刻,我會一點一點的慢慢寫出來,給你們分享,但願能給剛剛接觸Android的愛好者們帶來幫助。前端
這一篇我就詳細的講一下Activity的生命週期。
java
每個Activity都是有一個完整的生命週期的,就像有生命的人同樣經歷從出生到成長再到衰老,最後死亡的過程。咱們要了解Activity的生命週期是由七個方法構成的,這七個方法分別是:onCreate(),onStart(),onResume(),onPause(),onStop(),onRestart(),onDestroy(),咱們先來看一下Activity生命週期的結構圖再詳細講解一下每一個方法的意義及使用。
android
Activity生命週期示意圖:
app
從圖中咱們能夠清楚的看到整個Activity生命週期的完整轉變的過程,下面咱們就經過理論和例子對每個方法深刻理解:
ide
1.onCreate()方法:Activity第一次啓動時調用的方法,僅僅被執行一次;blog
2.onStart()方法:onCreate()執行以後被用戶可見時或onRestart()執行後從新被用戶可見時調用;生命週期
3.onResume()方法:onStart()執行以後緊接着執行的方法,或者onPause()或者onRestart()執行以後調用,該方法用來處理與用戶的交互,表示程序正在運行的狀態;內存
4.onPause()方法:當Activity被置於後臺且尚未被終止(killed)時調用,在系統內存不足時被調用;資源
5.onStop()方法:當Activity再也不被用戶可見時調用,也就是一個新的Activity這個Activity時調用,在系統須要內存時會終止該Activity;get
6.onDestroy()方法:在Activity被終止以前調用,完成最後的清理工做;
7.onRestart()方法:當Activity被調用onStop()方法被終止後又從新被用戶可見時調用。
根據上面圖中的過程以及七個方法簡單介紹咱們引入Activity的四個運行狀態:
(1)運行態Running:
Activity處於用戶的最前端,被用戶可見且得到焦點,此時能夠與用戶交互,調用完onResume()以後進入該狀。一個Activity從被建立到進入到運行狀態須要依次調用onCreate()-->onStart()-->onResume();
(2)暫停態Paused:
Activity被置於後臺但仍被用戶可見,此時失去了焦點,因此不能夠與用戶交互,可是狀態信息會被系統保留。調用完onPause()方法以後進入到此狀態。若想從新回到運行態須要調用onResume()方法;
(3)中止態Stopped:
當前的Activity被新的Activity覆蓋,此時的原來的Activity不只失去了焦點並且不被用戶可見,可是狀態信息仍被系統保存。調用onStop()方法以後進入到此狀態。若是想從新回到運行狀態,須要依次調用onRestart()-->onStart()-->onResume()方法;
(4)終止態Destroy:
Activity被系統終止,資源被回收。調用onDestroy()以後進入此狀態。若想從新回到此狀態須要從新建立Activity。
好了,接下來就看一下具體的代碼吧:
java文件MainActivity.java的代碼以下,其餘文件同樣:
package com.example.activity_life; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println("onCreate"); } @Override protected void onStart() { super.onStart(); System.out.println("onStart"); } @Override protected void onResume() { super.onResume(); System.out.println("onResume"); } @Override protected void onPause() { super.onPause(); System.out.println("onPause"); } @Override protected void onStop() { super.onStop(); System.out.println("onStop"); } @Override protected void onRestart() { super.onRestart(); System.out.println("onRestart"); } @Override protected void onDestroy() { super.onDestroy(); System.out.println("onDestroy"); } }
運行結果以下:
(1)首次運行程序(或者首次啓動程序):
(2)此時點擊模擬器上的首頁鍵,能夠觀察到以下結果:
(3)接着上面的狀況咱們找到menu裏的一個用程序圖標再次點擊,觀察:
(4)繼續接着上面往下走,此次咱們在這個應用程序正在運行時打個電話以及掛掉電話以後返回到應用程序的兩個標化過程,觀察結果:
掛掉電話以後:
(4)好,如今咱們剩下最後一種狀況了,直接按退出鍵(即返回鍵)的結果:
以上的例子,就是對Activity生命週期的體現的最基本的例子,咱們也能夠經過咱們生活中使用的真正的Android設備來體驗每一個不一樣的方法的調用,但願你能學得很好,謝謝觀看。