** Activity
一.Activity的了解
1.Activity定義 :
An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map. Each activity is given a window in which to draw its user interface. The window typically fills the screen, but may be smaller than the screen and float on top of other windows.
Activity:可譯為:活動,是android中的四大元件之一
它能提供能夠實作使用者操作并與之互動的界面
2.類比了解:想想Activity它類似于Java web中的什麼呢?
答案:Servlet
功能:處理使用者請求,并傳回給使用者一個UI
編碼:都是一個接口,需要子類去實作,需要在應用的配置檔案中注冊
二.Activity的使用
1.如何建立一個Activity?
①繼承于Activity
② 在androidmanifest.xml檔案中注冊
③ 設定Activity所對應的布局檔案
④ 重寫onCreate(),并加載布局文
2.如何啟動一個Activity?
- 一般啟動: startActivity(Intent intent);
-
帶回調的啟動
①startActivityForResult(Intent intent,int requestCode);
②新啟動的activity中:setResult(int resultCode,Intent intent)
③回到最初的Activity:onActivityResult(int requestCode,int ResultCode,Intent intent)
3.如何結束一個Activity?
finish();
三.Activity的生命周期
1.Activity的生命周期方法
2.Activity的4種狀态:
①運作狀态: 可見也可操作
②暫停狀态: 可見但不可操作
③停止狀态: 不可見,但對象存在
④死亡狀态: 對象不存在
3.不同狀态切換時,哪些生命周期方法會被調用?
(1)界面從“死亡”–>“運作”
MainActivity()—onCreate()—onStart()—onResume()
( 2) 界面從“運作”–>“死亡”
onPause()—onStop()—onDestroy()
( 3) 界面從“運作”–>“停止”
onPause()—onStop()
( 4) 界面從“停止” –>“運作”
onRestart()–onStart()–onResume()
( 5) 界面從“運作”–>“暫停”
onPause()
( 6) 界面從“暫停” –>“運作”
onResume()
Activity隻會占用部分視窗
日志:
啟動:
10-10 09:40:21.172: E/MainActivity(2595): MainActivity()
10-10 09:40:21.562: E/MainActivity(2595): onCreate()
10-10 09:40:21.562: E/MainActivity(2595): onStart()
10-10 09:40:21.562: E/MainActivity(2595): onResume()
—>顯示出了界面
回退:
10-10 09:41:37.452: E/MainActivity(2595): onPause()
10-10 09:41:38.092: E/MainActivity(2595): onStop()
10-10 09:41:38.092: E/MainActivity(2595): onDestroy()
啟動第二個界面
10-10 09:43:05.562: E/MainActivity(2595): onPause()
10-10 09:43:05.592: E/MainActivity(2595): SecendActivity()
10-10 09:43:05.852: E/MainActivity(2595): onCreate()—
10-10 09:43:05.852: E/MainActivity(2595): onStart()—
10-10 09:43:05.852: E/MainActivity(2595): onResume()—
—secend界面
10-10 09:43:06.322: E/MainActivity(2595): onStop()
從第二界面回退到第一個界面
10-10 09:47:28.262: E/MainActivity(2595): onPause()—
10-10 09:47:28.282: E/MainActivity(2595): onRestart()
10-10 09:47:28.292: E/MainActivity(2595): onStart()
10-10 09:47:28.292: E/MainActivity(2595): onResume()
10-10 09:47:28.642: E/MainActivity(2595): onStop()—
10-10 09:47:28.642: E/MainActivity(2595): onDestroy()—
啟動第二個界面(第一個界面還可見)
(10-10 09:51:58.452: E/MainActivity(5679): onPause()
10-10 09:51:58.482: E/MainActivity(5679): SecendActivity()
10-10 09:51:58.552: E/MainActivity(5679): onCreate()—
10-10 09:51:58.552: E/MainActivity(5679): onStart()—
10-10 09:51:58.552: E/MainActivity(5679): onResume()—
回退
10-10 09:54:10.452: E/MainActivity(5679): onPause()—
10-10 09:54:10.472: E/MainActivity(5679): onResume()
10-10 09:54:10.512: E/MainActivity(5679): onStop()—
10-10 09:54:10.512: E/MainActivity(5679): onDestroy()—
總結
* ① 隻要執行了onResume(),就進入運作狀态
* ② 最常需要重寫的方法:
onCreate():提供Activity在建立時的初始化資訊。
onDestroy():提供在Activity銷毀前的必要的操作
四.Activity的任務棧結構
1.在Android中,系統用Task Stack (Back Stack)結構來存儲管理啟動的Activity對象
2.一個應用啟動,系統就會為其建立一個對應的Task Stack來存儲并管理該應用的Activity對象
3.隻有最上面的任務棧的棧頂的Activity才能顯示在視窗中
五.Activity的啟動模式
在android的多activity開發中,activity之間的跳轉可能需要有多種方式,有時是普通的生成一個新執行個體,有時希望跳轉到原來已存在的activity執行個體,而不是生成大量的重複的activity。加載模式便是決定以哪種方式啟動一個跳轉到原來某個Activity執行個體。
在android裡,有4種activity的啟動模式,分别為:
standard:
标準模式,每次調用startActivity()方法就會産生一個新的執行個體。這是預設的模式
singleTop:
如果已經有一個執行個體位于Activity棧的頂部時,就不産生新的執行個體;如果不位于棧頂,會産生一個新的執行個體。
singleTask:
隻有一個執行個體, 預設在目前Task中
singleInstance:
隻有一個執行個體, 建立時會建立一個棧, 且此棧中不能有其它對象
問:在哪裡設定Activity的啟動模式?
答:在功能清單檔案中,Activity标簽内,設定其launchMode屬性