安卓開發基礎入門------Activity生命周期
標簽: Activity生命周期 android
給自己做個筆記,溫故而知新!
學習安卓開發,首先必須知道它最基本的常見的四大組件:Activity,Service,ContentProvider,BroadcastReceiver;那么Activity是我們在開發中接觸到最多的組件,所以對它的生命周期一定要有足夠的理解,從它被創建到銷毀是怎樣一個過程,中間經歷了什么,在開發中對程序員來講是由有很大的幫助,就像做數學題,你要知道它的原理你才更容易解題。
Activity是什么?
Activity中文意思是活動,在Android中,Activity代表著手機上的一個單獨的屏幕或窗口,其實可以理解為用戶可以看見的界面,它是可以和用戶進行交互操作的;在Android應用中,可以有多個Activity,這些Activity組成了ActivityStack(Activity棧),用戶可以看到的并且可以操作的界面(Activity),這個Activity是在棧頂,,之前的Activity會被壓在下面,用戶不可見。
生命周期:
Activity從開始到結束經歷各種狀態。從一個狀態到另一個狀態的轉變,從無到有從有再到無,這樣一個過程中所經歷的各個狀態就叫做生命周期。Activity擁有自己的生命周期,它的意義在于,當我們開發的當前界面在進行顯示的過程中,本身也會經歷各個狀態去準備和處理當前的activity,然后展示給用戶,而開發者為了界面上一些炫酷的效果與功能,做一些特殊處理時,就離不開這些生命周期。
- 各個狀態的方法
- onCreate():在第一次創建Activtiy的時候被調用,參數 onCreate(Bundle savedInstanceState),用于對該Activity執行初始化操作(導入布局文件,initView initClick等),savedInstanceState參數是Bundle類型的數據,它是以key-value的形式來保存Activity的實例狀態的,來自onsaveInstanceState方法,此方法是用來保存Activity的狀態的。當一個Activity在生命周期結束前,會調用該方法保存狀態。例如:當玩游戲的時候,突然退出,下次在進來的時候,接著上次的玩;這個時候就需要這個參數,并且重寫onsaveInstanceState方法;詳細:onsaveInstanceState的使用!
- onStart():啟動Activity時被調用,也就是當一個Activity變為顯示時被回調。
- onRestart():重新啟動activity時被調用,該方法被回調以后會再次回調onStart()方法。
- onResume():Activity處于運行狀態時回調,也就是有焦點可以交互的狀態時被回調,調用該方法時,此時Activity位于棧頂。
- onPause():Activity處于暫停狀態時回調,可以用來保存數據;該方法被回調以后會再次回調onResume()方法。
- onStop():停止Activity時,被調用。
- onDestory():Activty銷毀時,被調用。
一張圖看清Activity生命周期如何被調用
下圖中展示了activity的重要的狀態改變路徑。矩形中的代表你可以在活動在兩種狀態間改變時你可以實現的回調方法去執行想要的操作。而帶有顏色的橢圓形代表著activity的主要狀態。
實際操作
重寫生命周期方法,加入log看整個生命周期流程,代碼如下:
public class TestActivity extends Activity {
private String TAG = "zhyang";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_life);
Log.e(TAG,"Activity is onCreate");
findViewById(R.id.btn_finsh).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.e(TAG,"Activity is onSaveInstanceState");
}
@Override
protected void onStart() {
super.onStart();
Log.e(TAG,"Activity is onStart");
}
@Override
protected void onRestart() {
super.onRestart();
Log.e(TAG,"Activity is onRestart");
}
@Override
protected void onResume() {
super.onResume();
Log.e(TAG,"Activity is onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.e(TAG,"Activity is onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.e(TAG,"Activity is onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e(TAG,"Activity is onDestroy");
}
@Override
public void finish() {
super.finish();
}
}
- Log如下:
- 1.第一次創建Activity,然后收到點擊按鈕進行關閉Activity:
- 這是Activity生命周期執行的順序:
- 2.運行的Activity在后臺又回到前臺,實際操作:
- 1.Activity_A處于可見時點擊home鍵回到后臺再回到Activity_A
- 2.Activity_A處于可見時跳轉新的Activity_B然后再返回到Activity_A
- 3.按手機物理返回鍵,Activiyt_A的生命周期狀態:
- 4.Activity處于可見時,由豎屏變為橫屏生命周期:
5.Activity處于可見時,由橫屏豎屏變為豎屏生命周期:
本小節結束!!!!!
智能推薦
02 安卓開發之生命周期
1 Activity四種狀態 Active/Running: Activity處于活動狀態,此時Activity處于棧頂,是可見狀態,可與用戶進行交互。 Paused: 當Activity失去焦點時,或被一個新的非全屏的Activity,或被一個透明的Activity放置在棧頂時,Activity就轉化為Paused狀態。但我們需要明白,此時Activity只是...
Android入門基礎(7) ---activity生命周期
Android入門基礎(7) ---activity生命周期 activity生命周期需要自己動手去親自感受下,才會有收獲。關鍵是如何很好的充分顯示activity的生命周期,如何更好的利用好、控制好activity小生命,讓我們對她的一舉一動很了解。 接下來分享下自己測試activity的小例子。 本程序分兩個activity,并且在第一個activity中有個dialog,測試dialog和a...
Android開發基礎之Activity的生命周期
★Activity的生命周期 首先是Ativity一共有7個生命周期,下面是它的7個生命周期 我相信大家第一次看見這些方法會感到陌生,但是第一個方法相信大家都見過,我們創建一個Activity,編寫代碼的時候都會先調用onCreate方法,至于為什么我等一下會講。 下面是這幾個活動周期的關系圖: 我相信很多學習視頻在講Activity的周期的時候都會編寫一個測試程序,寫出上面的7個方法然后通過打印...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
猜你喜歡
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...