基礎(chǔ)篇1:Activity

目錄
1.生命周期
2.啟動模式
3.Activity任務(wù)棧(管理Activity)
4.Activity四種狀態(tài)
5.Android進(jìn)程優(yōu)先級
6.scheme跳轉(zhuǎn)協(xié)議

1.生命周期

Activity生命周期流程圖

在谷歌官方文檔中,這樣說道每個方法的作用:

onCreate

在activity正常生命周期的情況下经瓷,創(chuàng)建的時候執(zhí)行一次且是第一次創(chuàng)建時調(diào)用妈经,此后,都不再執(zhí)行,鑒于這種情況,在activity生命周期內(nèi),只需要初始化一次的變量。
例如:這里應(yīng)該完成所有靜態(tài)資源的建立, 比如使用setContentView(int)和布局資源定義你的UI視圖, 使用findViewById(int)取出程序中需要交互的控件, 綁定數(shù)據(jù).
此時視圖還不存在,無法調(diào)用動畫等.
還有需要注意, 每次activity啟動, 不一定都會調(diào)用這個函數(shù). 當(dāng)當(dāng)前activity只是被覆蓋一部分, 當(dāng)前activity再次可交互時,是只調(diào)用onResume方法, 不會調(diào)用onCreate方法.

onStart

可以在onStart中檢測一些必要的初始化條件。

  • 例如檢查gps是否可用界睁。如不可用,可以提示用戶設(shè)置兵拢。離開返回時翻斟,必定還會調(diào)用onStart,可以再做檢測卵佛。

onResume

打開獨占設(shè)備,如相機,在onPause中釋放.

onPause

  • onPause是釋放資源的最佳時機
  • 如果當(dāng)前activity擁有獨占資源(比如相機), 必須在這里釋放, 以免在下一個activity中需要用到
  • onPause方法的執(zhí)行時間會直接影響下一個Activity的啟動流暢度
  • onPause執(zhí)行有一定的時間限制(500ms)

底層執(zhí)行Activity 的onPause()時杨赤,有一定的時間限制的,當(dāng)ActivityManagerService通知應(yīng)用進(jìn)程暫停指定的Activity時截汪,如果對應(yīng)的onPause()在500ms內(nèi)還沒有執(zhí)行完疾牲,ActivityManagerService就會強制關(guān)閉這個Activity。如下就是對應(yīng)的onPause()執(zhí)行超時常量定義:

// How long we wait until giving up on the last activity to pause.

//This is short because it directly impacts the responsiveness of startingthe

// next activity.

static final int PAUSE_TIMEOUT = 500; // 定義在ActivityStack.java中

onStop

在onStop中衙解,可以執(zhí)行一些稍微重量一點的任務(wù)阳柔。
請注意: 在內(nèi)存不足而導(dǎo)致系統(tǒng)無法保留此進(jìn)程的情況下, onStop() 可能不會被執(zhí)行。

onDestroy

在onDestory中可以釋放一些變量蚓峦,特別是在onCreate中初始化舌剂,存在在整個生命周期內(nèi)的變量,例如bitmap的回收

onRestart

重新啟動activity時調(diào)用暑椰。該活動仍在棧中霍转,而不是啟動新的活動。onRestart事件后會跳過窗體的onCreate事件直接執(zhí)行onStart事件一汽。

onPostCreate——Activity徹底運行起來之后的回調(diào)

注意

  • 幾乎所有Activity的子類,都會實現(xiàn)onCreate和onPause這兩個方法.
參考資料

2.啟動模式

  • standard
  • singletop
  • singletask
  • singleinstance

參考資料

3.Activity任務(wù)棧

  • 先進(jìn)后出

4.Activity四種狀態(tài)

running / paused / stopped / killed
  • runing
    用戶可以點擊纱意,activity處于棧頂狀態(tài)。
  • paused
    activity失去焦點的時候鲸阔,被一個非全屏的activity占據(jù)或者被一個透明的activity覆蓋偷霉,這個狀態(tài)的activity并沒有銷毀迄委,它所有的狀態(tài)信息和成員變量仍然存在,只是不能夠被點擊腾它。(除了內(nèi)存緊張的情況跑筝,這個activity有可能被回收)
  • stopped
    activity失去焦點的時候死讹,被一個非全屏的activity占據(jù)或者被一個透明的activity覆蓋瞒滴,這個狀態(tài)的activity并沒有銷毀,它所有的狀態(tài)信息和成員變量仍然存在赞警,只是不能夠被點擊妓忍。(除了內(nèi)存緊張的情況,這個activity有可能被回收)
  • killed
    這個activity已經(jīng)被銷毀愧旦,其所有的狀態(tài)信息和成員變量已經(jīng)不存在了世剖。

5.Android進(jìn)程優(yōu)先級

前臺 / 可見 / 服務(wù) / 后臺 / 空
1. 前臺進(jìn)程:Foreground process
  • 用戶正在交互的Activity(onResume())
  • 當(dāng)某個Service綁定正在交互的Activity
  • 被主動調(diào)用為前臺Service(startForeground())
  • 組件正在執(zhí)行生命周期的回調(diào)(onCreate()、onStart()笤虫、onDestory())
  • BroadcastReceiver正在執(zhí)行onReceive()
2. 可見進(jìn)程:Visible process
  • 我們的Activity處在onPause()(沒有進(jìn)入onStop())
    綁定到前臺Activity的Service
3. 服務(wù)進(jìn)程:Service process
  • 簡單的startService()啟動旁瘫。
4. 后臺進(jìn)程:Background process
  • 對用戶沒有直接影響的進(jìn)程 --- Activity處于onStop()的時候。
    android:process=":xxx"
5. 空進(jìn)程:Empty process
  • 不含有任何的活動的組件琼蚯。(Android設(shè)計的酬凳,處于緩存的目的,為了第二次啟動更快遭庶,采取的一個權(quán)衡)

6.scheme跳轉(zhuǎn)協(xié)議

Android中的scheme是一種頁面內(nèi)跳轉(zhuǎn)協(xié)議宁仔,通過定義自己的scheme協(xié)議,可以跳轉(zhuǎn)到app中的各個頁面

  • 服務(wù)器可以定制化告訴app跳轉(zhuǎn)哪個頁面
  • App可以通過跳轉(zhuǎn)到另一個App頁面
  • 可以通過H5頁面跳轉(zhuǎn)頁面

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末峦睡,一起剝皮案震驚了整個濱河市翎苫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌榨了,老刑警劉巖煎谍,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異龙屉,居然都是意外死亡呐粘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門叔扼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來事哭,“玉大人,你說我怎么就攤上這事瓜富△⒃郏” “怎么了?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵与柑,是天一觀的道長谤辜。 經(jīng)常有香客問我蓄坏,道長,這世上最難降的妖魔是什么丑念? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任涡戳,我火速辦了婚禮,結(jié)果婚禮上脯倚,老公的妹妹穿的比我還像新娘渔彰。我一直安慰自己,他們只是感情好推正,可當(dāng)我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布恍涂。 她就那樣靜靜地躺著,像睡著了一般植榕。 火紅的嫁衣襯著肌膚如雪再沧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天尊残,我揣著相機與錄音炒瘸,去河邊找鬼。 笑死寝衫,一個胖子當(dāng)著我的面吹牛顷扩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竞端,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼屎即,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了事富?” 一聲冷哼從身側(cè)響起技俐,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎统台,沒想到半個月后雕擂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡贱勃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年井赌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贵扰。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡仇穗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出戚绕,到底是詐尸還是另有隱情纹坐,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布舞丛,位于F島的核電站耘子,受9級特大地震影響果漾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谷誓,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一绒障、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捍歪,春花似錦户辱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒋伦。三九已至弓摘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痕届,已是汗流浹背韧献。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留研叫,地道東北人锤窑。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像嚷炉,于是被迫代替她去往敵國和親渊啰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 本文出自 “阿敏其人” 簡書博客,轉(zhuǎn)載或引用請注明出處哗讥。 一嚷那、前言 Activity,安卓四大組件之一杆煞。 每個 A...
    阿敏其人閱讀 9,111評論 8 88
  • Activity https://developer.android.com/guide/components/a...
    XLsn0w閱讀 707評論 0 4
  • 啟動與銷毀Activity 不同于使用 main() 方法啟動應(yīng)用的其他編程范例魏宽,Android 系統(tǒng)會通過調(diào)用對...
    安卓Boy閱讀 1,775評論 3 5
  • 5月19日 晚上21:05 隨著一條提示:“我通過了你的好友驗證請求队询,現(xiàn)在我們可以開始聊天了” 但是我卻沒有立刻就...
    327d4d59514f閱讀 309評論 0 2
  • 主啊,是你給了我福分和憐憫构诚,給了我生活向上的動力蚌斩,老婆一向辛苦付出,為了家唤反,為了兒女凳寺,無怨無悔鸭津,我愛她,更愛我的家肠缨。
    我主何等偉大閱讀 206評論 0 0