Android基礎課堂-Lesson.2

大大花貓發表於2016-09-12

Android 基礎課堂

在上週的基礎課堂中,我們說過了,本系列的基礎課堂將會結合一個應用的開發過程慢慢帶大家慢慢深入理解Android開發的過程,故該基礎課堂和正常的Android入門教程不太一樣,不會像正常的Android入門教程那樣,巴拉巴拉的從四大元件、各種控制元件等等開始講,而是會遵從用到什麼講什麼的原則,然後慢慢 涵蓋各元件、各控制元件,在實際場景中學習元件、控制元件的應用,我覺得對於入門來說,是比較好接受的,當然入門之後,我們可以反過來把Android的整體架構再理一遍過去,這時候來理架構比起一入門就理架構,我覺得會比較好懂點。
至於我們要開發一個什麼樣的應用呢,這個嘛,慢慢的就知道了,哈哈隨著基礎課堂的延續,該應用會慢慢的展現在我們眼前,那麼下面就讓我們進入到今天的基礎課堂吧。

第二課、從建立一個Android工程開始

  • 一、Hello Android
  • 在第一課中,我們已經搭建完Android開發環境了,那麼接下來我們就來用Android Studio(下文中將用AS簡寫來代表Android Studio)建立我們的第一個工程吧
  • 開啟我們安裝完的AS,將會看到如下介面
  • TB1frvkLpXXXXcgXpXXXXXXXXXX-554-328.png
  • 由於我們是要建立一個新的工程,所以我們點選Start a new Android Studio project 來建立工程,然後我們會進入下面這個介面
  • TB1ANO5LpXXXXcXaXXXXXXXXXXX-554-388.png
  • 我們可以看到,這裡有三項是需要我們填寫的,他們分別是
  • Application name:這裡填寫的是我們的工程名
  • Company Domain:這裡填寫公司域名,它的倒序加上我們的工程名構成我們的包名,包名是標識一個應用的標誌
  • Project location:工程儲存的位置
  • 我們可以根據自己的需求去填寫上面三項,然後單擊next進入到下一步,進入到如下介面
  • TB1UVTlLpXXXXaFXpXXXXXXXXXX-554-388.png
  • 我們直接使用預設設定即可,其中的Minimum SDK用於標識我們的這個應用向下相容的最低Android版本,點選next進入下一步
  • TB15GDiLpXXXXXRXFXXXXXXXXXX-554-388.png
  • 該步為我們的應用新增第一個Activity (Activity 是啥?請往下看),在這裡可以選擇Activity 的主題樣式,當然,我們也可以選擇Add No Activity來設定不預設建立第一個Activity ,這裡我們預設選擇建立一個Empty Activity,單擊next
  • TB1C51eMVXXXXavXpXXXXXXXXXX-554-388.png
  • 可以看到,這裡需要我們填寫Activity Name 和 Layout Name,即該Activity的名稱和他對應的佈局Layout的名稱,填完之後,單擊Finish,這時我們的工程就建立完了,然後我們就會進入到我們的工程介面了
  • TB1BJi4LpXXXXbEaXXXXXXXXXXX-554-429.png
  • 可以看到,工程下的資料夾啥的還是比較多的,同樣的,我們僅先對要用到的幾個資料夾做下介紹,其餘的資料夾還是本著用到什麼介紹什麼的原則,那麼下面讓我們來看看一些資料夾吧

    • TB1joSeMVXXXXajXpXXXXXXXXXX-554-429.png
  • ①:這個資料夾中存放著我們的邏輯程式碼,包括一些頁面邏輯,事件處理等等,所以平時我們寫的程式碼,大多都是出於這個資料夾這下的
  • ②:這個資料夾存放著我們的佈局檔案,最直觀的解釋就是,我們在手機上看到的介面,就是通過這個資料夾裡的佈局檔案描述的,當然也不是絕對的,因為我們也可以通過程式碼直接去建立佈局,而不使用視覺化.xml去建立檢視,這個在接下來我們會講到用兩者分別如何建立佈局
  • 從簡單了講,一個APP就是介面加邏輯,上面兩個資料夾可以涵蓋這些所需的東西,然而這只是從最簡單的demo來說而已,真正上線的APP,還會涉及到其他資料夾

  • 二、初識Activity
  • 在上面建立工程的時候,可以選擇是否建立第一個Activity ,以及建立什麼樣式的Activity ,那麼本著用到什麼講解什麼的原則,我們現在就來講講Activity
  • Activity 是四大元件之一,並且是我們最經常用到的元件,Activity 是使用者介面程式,原則上它會提供給使用者一個互動式的介面功能。Activity 本身是沒有介面的,Activity 類建立了一個視窗,通過setContentView(View)介面把.xml介面放到Activity 建立的視窗上。當Activity 指向全屏視窗時,也可以用其他方式實現:作為漂浮視窗(通過windowIsFloating的主題集合),或者嵌入到其他的Activity (使用ActivityGroup)。activity是單獨的,用於處理使用者操作。幾乎所有的Activity 都要和使用者打交道,說簡單點就是,我們在手機上看到的頁面,基本上都是需要一個Activity 承載的。
  • 下面我們來看看Activity從建立到被銷燬之間,都呼叫了哪些函式做了哪些事,即Activity的生命週期
  • TB1KU6rJFXXXXb.apXXXXXXXXXX-548-719.png
  • 這是Activity的生命週期圖,我們可以看到,從Activity建立開始到被銷燬,會依次呼叫onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy,那麼具體在什麼時候呼叫這些方法呢?
  • 在一個Activity正常啟動過程中,這些方法呼叫的順序是onCreate -> onStart -> onResume;在Activity被kill掉的時候方法順序是onPause -> onStop -> onDestroy,這是Activity的一個完整的生命週期。但是從建立到被銷燬,之間可能會經過各種情況,例如對於中斷處理,比如來電話了,這時候會呼叫的是onPause -> onStop,接完電話重新回答頁面時onStart -> onResume;如果當前應用程式的是一個Theme為Translucent(半透明) 或者Dialog 的Activity那麼中斷就是onPause ,恢復的時候onResume;關於Activity在各種特殊情況下呼叫哪些生命週期函式,可以通過過載這些函式列印log,然後針對特殊情況進行測試,這樣我們就能清楚的知道Activity在各種情況下分別呼叫了什麼方法了。
  • 在Activity的生命週期的各個函式中,我們應該做些什麼呢?

  onCreate:在這裡建立介面,做一些資料的初始化工作;
  
  onStart: 到這一步變成“使用者可見不可互動”的狀態;
  
  onResume:變成和使用者可互動的,(系統通過棧的方式管理Activity,即當前Activity在棧的最上端,執行完彈出棧,則回到上一個Activity);
  
  onPause:到這一步Activity是可見但不可互動的,系統會停止動畫等消耗CPU的事情。從上文的描述已經知道,應該在這裡儲存你的一些資料,因為這個時候你的程式的優先順序降低,有可能被系統收回。在這裡儲存的資料,應該在onResume裡讀出來。
  
  onStop:變得不可見 ,被下一個Activity覆蓋了
  
  onDestroy:這是Activity被kill前最後一個被呼叫方法了,可能是其他類呼叫finish方法或者是系統為了節省空間將它暫時性的幹掉,可以用isFinishing()來判斷。
  

  • 關於Activity的跳轉以及通訊之類的內容,我們還是本著用到的時候再講解的原則,在真正用到的地方再去講解它的用法及功能,這將有利於我們在實際應用中理解它,而不至於我們現在講了,到真正使用的時候,如果不重新講會遺忘它的用法與功能,對理解不利。

  • 本次的基礎課堂,我們把Android工程搭建起來了,也講了Android中的四大元件之一Activity的一些內容,下次基礎課堂,我們將會進入我們的應用的第一個頁面的相關內容的搭建,下節課見啦~


相關文章