安卓基礎知識
看第一行程式碼時學習和記錄的
第一章:
Android的四層系統架構:
linux核心層(裡那克斯):安卓系統是基於linux核心的,這一層為安卓裝置的各種硬體提供了底層驅動
系統執行庫層:這一層通過一些C/C++庫來為android系統提供了重要的特性支援
應用框架層:這一層主要提供了構建應用程式時可能用到的各種API
應用層:這一層包含所有安裝在手機上的應用程式
Android系統四大元件
Activity、 Service、 Broadcast Reciver 、Content Provider
活動是安卓應用程式的門面,凡是在應用中你看的到的東西,都是放在活動中的
Activity是安卓系統提供的一個活動基類,我們專案中所有的活動都必須繼承它或者它的子類,才能擁有活動的特性
onCreate()方法,是一個活動被建立時必須要被執行的方法
安卓程式設計講究程式和檢視分離,因此不推薦直接在活動中編寫介面,更通用的一種方法時,在佈局檔案中編寫介面,然後在活動中引進來
專案中的資源:res資料夾
drawable開頭的放圖片
mipmap開頭的放應用圖示
values開頭的放字串 樣式 顏色等配置的
layout開頭的放佈局檔案的
程式碼中引用是用R.String.Hello
xml中引用 @String.Hello
android studio是利用gradle來構建工程的
安卓列印日誌的工具類是Log,等級首字母為方法名,從低到高分別是verbose、debug、info、warn(警告)、error(嚴重問題)
第二章 探究活動
活動是一種可以包含使用者介面的元件,主要用於和使用者互動,是安卓應用程式的門面,凡是你所看到的都是放在活動中的
專案中的任何activity都應該重寫Activity類的OnCreate()方法
最好每一個活動對應一個佈局
點選back按鈕可以銷燬一個環境,或者使用finish()方法,兩者效果是一樣的
點選啟動應用的圖示只會進入到這個應用的主頁活動頁面,那麼如何跳轉到其他活動呢
使用intent,其中有顯式intent和隱式intent
intent是安卓程式中各元件相互之間進行互動的一種方式,可以指明當前元件想要執行的動作,還可以在各個元件之間傳遞資料
intent一般可以用於啟動活動,啟動服務以及傳送廣播等場景
intent的有多個建構函式的過載,比如 Intent(Context,class),即需要兩個引數,一個是背景,一個是要開啟的活動
通過intent可以開啟網頁,一個活動向下一個活動傳遞資料,返回資料給上一個活動
活動的生命週期:
安卓中的活動是可以層疊的,每啟動一個新的活動,都會覆蓋在原來的活動之上,點選back會銷燬上面的活動,下面的一個活動重新展示出來
安卓是使用任務(Task)來管理活動的,一個任務就是一組存放在棧裡的活動的集合,這個棧也被稱為返回棧,棧是一種後進先出的資料結構
啟動一個新的活動時,該活動會在返回棧中入棧,位於棧頂,如果該活動被銷燬,那麼就會展示前一個入棧的活動,系統總是展示處於棧頂的活動給使用者
每個活動在其生命週期最多可能有四個狀態:
1、running 執行狀態:當一個活動位於返回棧的棧頂,此時活動處於執行狀態
2、paused 暫停狀態:當一個活動不再處於棧頂,但是仍然可見時,此時活動進入暫停狀態
3、stoped 停止狀態:當一個活動不再處於棧頂,並且完全不可見時,此時活動進入停止狀態,當其他地方需要記憶體時,停止狀態的活動會被回收
4、killed 銷燬狀態:當一個活動從返回棧中移除,就變成了銷燬狀態,系統最傾向於回收處於這種狀態的活動,從而保證手機裡的記憶體充足
(當一個Activity處於暫停狀態或停止狀態時就隨處可能進入死亡狀態,因為系統可能因記憶體不足而強行結束該Activity。
停止狀態到死亡狀態分為兩種情況:(1)由使用者操作導致,則執行:onStop() -> onDestroy()。(2)由系統自動強制執行,則該Activity被強行結束。)
Activity的七個回撥方法
啟動活動(從無要create--start--resume到running狀態)
onCreate() 該方法會在活動第一次被建立的時候呼叫,進行一些初始化操作
onStart()該方法在活動從不可見變成可見的時候呼叫
onResume()該方法在活動準備好和使用者互動的時候呼叫,此時的活動一定在棧頂且處於執行狀態
活動執行中
「另一個活動啟動,但是並未完全遮蓋」
onPause()在系統準備去啟動或者恢復另一個活動的時候呼叫(paused狀態執行resume到running狀態,paused狀態執行stop到stoped狀態 )
「另一個活動啟動,且完全遮蓋」
onStop()在活動完全不可見時呼叫 (stoped狀態要執行restart--start-resume到running狀態)
「活動被銷燬,退出app」
onDestroy()在活動被銷燬之前呼叫,之後活動的狀態將變為銷燬狀態
onRestart()在活動由停止狀態變成執行狀態之前呼叫,也就是活動被重新啟動了
以上七個方法,除了onRestart()方法,其他都是倆倆相對的
點選app圖示後主活動啟動,再點選進入其他頁面,這個過程中回撥方法的使用,和活動狀態的變化
1-點選app圖示--主活動被建立,主活動依次執行onCreate() onStart() onResume()方法,主活動是run執行狀態
2-點選一個全遮蓋主活動活動入口,主活動依次執行onPause() onStop(),主活動是Stop停止狀態
3-此時點選返回按鈕回到主活動頁面,執行onRestart()方法,之後依次執行onStart() onResume()方法,主活動run狀態
4-此時點選一個對話型別的活動入口,主活動執行onPause()方法,主活動paused狀態
5-再次點選返回按鈕,主活動執行onResume方法,主活動run狀態
6-再次點選返回,主活動依次執行onStop() onDestroy()
簡單來說,啟動app,主活動依次執行方法 onCreate onStart onResume 到達running狀態,其中onCreate是第一次建立活動才會呼叫
running活動被完全遮蓋,主活動依次執行(onPause onStop)到stoped狀態,如果從stoped狀態到running,需要onRestart onStart onResume
running活動被部分遮蓋,主活動執行onPause到paused狀態,如果從paused狀態到running,需要onResume
活動正在running,關閉app主活動依次執行方法 onPause onStop onDestroy 到destroyed狀態,其中onDestroyed要活動被銷燬或者被收回時執行
app放在後臺時,主活動要從當前狀態到達stoped狀態,如果是running那麼依次執行onPause onStop到stoped狀態,如果是paused那麼執行onStop到stoped狀態,已經stoped狀態則不變
app從後臺喚醒時,主活動走stoped狀態揮發到之前的狀態的步驟,如果之前是running那麼走onRestart onStart onResume,如果之前是paused那麼只走onRestart onStart