1. 程式人生 > >Android App components

Android App components

僅僅作為AndroidDeveloper的學習筆記

Introduction to Activities

Activities是Android四大元件之一,使用者可與其提供的螢幕進行互動,以執行撥打電話、拍攝照片、傳送電子郵件或檢視地圖等操作。 每個 Activity 都會獲得一個用於繪製其使用者介面的視窗。視窗通常會充滿螢幕,但也可小於螢幕並浮動在其他視窗之上。

在manifest.xml中的寫法為:

<manifest ... >
  <application ... >
      <activity android:name=".ExampleActivity"
/>
... </application ... > ... </manifest >

Activity Lifecycle

  • 整個生命週期(onCreate() -> onDestroy())
  • 可見生命週期(onStart() -> onStop())
  • 前臺生命週期(onResume() -> onPause())

整個生命週期和前臺生命週期很好理解,那麼可見生命週期和前臺生命週期有什麼區別呢?因為螢幕上可以存在多個Activity,比如在一個Activity1中打開了一個對話方塊(這個對話方塊也是一個Activity,記為Activity2),此時使用者既可以看到Activity1也可以看到Activity2,此時Activity2處於前臺生命週期,Activity1處於可見生命週期。如下圖所示,當點選START DIALOGACTIVITY按鈕時,MainActivity會呼叫onPause()方法,而不是onStop()。

這裡寫圖片描述

完整的生命週期示意圖如下圖所示:

這裡寫圖片描述

Tasks and Back Stack

Android中的Activity是可以層疊的,沒啟動一個新的Activity,就會覆蓋在原有的Activity之上,然後點選Back鍵會銷燬最上面的Activity,下一個Activity就會重新顯示出來。可以思考一下這種層疊的結構怎麼實現?沒錯,就是棧,First in Last out,假設啟動順序為Activity1 -> Activity2 -> Activity3,那麼棧中的結構是,Activity3在頂部,Activity1在底部。

When the user presses the Back button: 這裡寫圖片描述

在Android中,是使用Task來管理Activity的,一個Task就是一個這樣的棧結構,這個棧也被稱為Back Stack。

launchMode:

  • standard(the default mode):每啟動一個新的Activity,都會建立一個新的例項
  • singleTop:如果啟動的Activity已經在棧頂,則不會再建立例項
  • singleTask:只要啟動的Activity在棧裡面,則不會再建立例項,並且這個Activity之上的所有Activity全部出棧,如果沒有在棧裡面,則建立例項
  • singleInstance:這種模式是為了不同的APP能共享Activity,啟動的Activity會在一個單獨的Back Stack中,這個Back Stack只有這一個Activity。

這裡我畫了一個示例圖:

這裡寫圖片描述