天天看點

Android四大元件之一:Activity總結(上)

** 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的生命周期方法

Android四大元件之一: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的任務棧結構

Android四大元件之一: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屬性