1. 程式人生 > >一步一步學習Android開發——Activity初步(1)

一步一步學習Android開發——Activity初步(1)

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.

引用谷歌Dev. Guide原話作為開篇。作為Android眾多組建最基礎的元件之一,Google把Activity放在第一個是有道理的,正如你看一個人會先看她的臉。
說通俗點,Activity就是你的程式執行起來,顯示給使用者的介面。可以是全屏的介面,也可以是彈出的視窗。

下面進入重點,也是所有Android開發繞不開的話題:1. Activity生命週期,2. Activity之間的通訊,3. Activity佈局

1. Activity生命週期

說通俗點,Activity生命週期其實就是一個介面從第一次出現到最後消失的整個過程。

在 android 中,Activity 擁有四種基本狀態:

  1. Active/Runing一個新 Activity 啟動入棧後,它在螢幕最前端,處於棧的最頂端,此時它處於可見並可和使用者互動的啟用狀態。
  2. Paused 當 Activity 被另一個透明或者 Dialog 樣式的 Activity 覆蓋時的狀態。此時它依然與視窗管理器保持連線,系統繼續維護其內部狀態,所以它仍然可見,但它已經失去了焦點故不可與使用者互動。
  3. Stopped 當 Activity 被另外一個 Activity 覆蓋、失去焦點並不可見時處於 Stoped狀態。
  4. Killed Activity 被系統殺死回收或者沒有被啟動時處於 Killed狀態。

當一個 Activity 例項被建立、銷燬或者啟動另外一個 Activity 時,它在這四種狀態之間進行轉換,這種轉換的發生依賴於使用者程式的動作。

這裡比較難理解的是2和3,通俗點說就是新的Activity完全遮擋住舊的Activity時,舊的Activity就會進入Stopped狀態,否則進入Paused狀態。看起來很繁瑣,但其實這些都是交給系統統一管理的,我們只需要在自己想要的狀態做自己想要做的事情就行。 再說通俗點,我們只需要重寫對應的方法就可以在對應的狀態下做自己要做的事情了。

 public class OurActivity extends Activity { 
    protected void onCreate(Bundle savedInstanceState); 
    protected void onStart(); 
    protected void onResume(); 
    protected void onPause(); 
    protected void onStop(); 
    protected void onDestroy(); 
 } 
這裡簡單舉例說明Activity狀態轉移到running的不同方式。

1. 第一次啟動或者之前起的程序已經被系統殺掉了:呼叫onCreate,再呼叫onStart,再呼叫onResume(事實上,我們只需要重寫onCreate方法就行)

2. Activity1正在running,嶄新的Activity2啟動,沒有完全遮擋Activity1

Activity1呼叫onPause,Activity2呼叫onCreate,再呼叫onStart,再呼叫onResume

如果Activity1重新轉到前臺:Activity1呼叫onResume直接到running

3.Activity1正在running,嶄新的Activity2啟動,完全遮擋Activity1

Activity1呼叫onPause,再呼叫onStop,Activity2呼叫onCreate,再呼叫onStart,再呼叫onResume