Activity總結(jié)(1)

定義:

Android四大組件之一,提供界面和用戶交互(如滑動抬闯、點(diǎn)擊等)

說明:

首先必須在AMF注冊浑塞,然后我們開始下面的學(xué)習(xí)吧。

1. 老生常談的生命周期和四種狀態(tài)

七個(gè)生命周期方法的特點(diǎn)

onCreate:創(chuàng)建時(shí)調(diào)用

onStart:可見,但是沒焦點(diǎn)

onResume:得到焦點(diǎn)

onPause:依然可見.但是失去焦點(diǎn)

onStop:已經(jīng)不可見

onDestroy:銷毀了 前六個(gè)狀態(tài)方法

onRestart:重啟

當(dāng)系統(tǒng)內(nèi)存不足時(shí)孕惜,之前啟動但未退出的進(jìn)程愧薛,會被系統(tǒng)殺死,根據(jù)LRU(最近最少使用)算法確定殺死哪個(gè)進(jìn)程

Activity被銷毀衫画,進(jìn)程并不會被銷毀毫炉,這是為了下一次啟動更快

1.1、Activity四種狀態(tài)

runing ?交互狀態(tài) ?對應(yīng) onResume

paused 對應(yīng) onPause

stopped ?對面 OnStop

killed ?已經(jīng)被干死了

2. 啟動方式(跳轉(zhuǎn)方式)

啟動方式分為顯示啟動隱式啟動

顯示啟動:效率較高 常用啟動方式

Intent intent=new Intent(MainActivity.this, SecondActivity.class);

startActivity(intent);

隱式啟動:通過動作跳轉(zhuǎn) 一般用于調(diào)用系統(tǒng)應(yīng)用(如:報(bào)號器等)

Intent intent = new Intent();

intent.setAction(Intent.ACTION_DIAL);//啟動系統(tǒng)自帶的撥號器應(yīng)用

startActivity(intent);

2.1 有回調(diào)的跳轉(zhuǎn) ?startActivityForResult

A(Activity)-----跳轉(zhuǎn)----->B(Activity)

Intent intent = new Intent();

intent.setClass(this, B.class);

startActivityForResult(intent, requestCode);//開啟activity并且獲取返回值

B (Activity)

Intent data = new Intent();

data.putExtra("phone", phone);

setResult(0, data); ?//回傳數(shù)據(jù)

A? ? (Activity)

//通過data獲取返回的數(shù)據(jù) ?B窗口關(guān)閉 ?A窗口運(yùn)行一下方法

onActivityResult(int requestCode, int resultCode, Intent data) {

削罩。瞄勾。。弥激。丰榴。。//處理回調(diào)的數(shù)據(jù)

}

2.2 Activity跳轉(zhuǎn)生命周期的變法

下圖紅框內(nèi)的是A的生命周期秆撮,這是正常情況下四濒。

Activity A跳轉(zhuǎn)B

我們知道當(dāng)Activity界面被旋轉(zhuǎn),Activity會重新創(chuàng)建职辨。

解決:在AMF的Activity中添加android:configChanges="orientation|screenSize"盗蟆。

(android:configChanges="orientation|keyboardHidden",這個(gè)是較低版本的安卓系統(tǒng)的情況舒裤,4.0之后的版本要加上 screenSize 才有效喳资。)

實(shí)際開發(fā)中我們一般都是不允許Activity旋轉(zhuǎn),這樣既能保證Activity不被重新創(chuàng)建腾供,也能保證布局的適配仆邓,當(dāng)然也更適合我們使用手機(jī)的習(xí)慣鲜滩。

解決:第一種在AMF中添加 android:screenOrientation="portrait"

第二種在代碼中設(shè)置setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

PS:screenOrientation的幾個(gè)參數(shù)

"unspecified":默認(rèn)值 由系統(tǒng)來判斷顯示方向.判定的策略是和設(shè)備相關(guān)的,所以不同的設(shè)備會有不同的顯示方向.

"landscape":橫屏顯示(寬比高要長)

"portrait":豎屏顯示(高比寬要長)

"user":用戶當(dāng)前首選的方向

"behind":和該Activity下面的那個(gè)Activity的方向一致(在Activity堆棧中的)

"sensor":有物理的感應(yīng)器來決定节值。如果用戶旋轉(zhuǎn)設(shè)備這屏幕會橫豎屏切換徙硅。

"nosensor":忽略物理感應(yīng)器,這樣就不會隨著用戶旋轉(zhuǎn)設(shè)備而更改了("unspecified"設(shè)置除外)搞疗。

還有一種情況就是Activity被系統(tǒng)回收嗓蘑,加入被回收的Activity叫A,那么當(dāng)我們從B回到A時(shí)匿乃,A會重新創(chuàng)建桩皿。


3.啟動模式

Activity有四中啟動模式

Standard:默認(rèn)啟動模式先進(jìn)后出

SingleTop:棧頂模式當(dāng)前Activity在棧頂(實(shí)例),那么就不會再創(chuàng)建了幢炸, 如果不在棧頂 會創(chuàng)建 新的Activity

SingleTask:任務(wù)棧模式當(dāng)前棧只能存在一個(gè)實(shí)例泄隔。當(dāng)前Activity在棧頂(實(shí)例),那么就不會再創(chuàng)建了宛徊;

如果不在棧頂梅尤,則會跳轉(zhuǎn)到實(shí)例Activity,實(shí)際上是殺死棧中該Activity上方的所有Activity岩调,讓其成為棧頂Activity

SingleInstance:實(shí)例模式保證整個(gè)手機(jī)內(nèi)存中都只有一個(gè)該Activity的實(shí)例。 每次創(chuàng)建都是在一個(gè)新的棧里創(chuàng)建Activity

4. 擴(kuò)展

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

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

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

可以通過H5頁面跳轉(zhuǎn)頁面(如:花生米地鐵wifi)

使用方法:AMS中的Activity添加一個(gè)過濾器

Activity獲取外部跳轉(zhuǎn)的消息

Intent intent =getIntent();

Log.e(TAG, "scheme:" +intent.getScheme());

Uri uri =intent.getData();

Log.e(TAG, "scheme: "+uri.getScheme());

Log.e(TAG, "host: "+uri.getHost());

Log.e(TAG, "port: "+uri.getPort());

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陨享,一起剝皮案震驚了整個(gè)濱河市葱淳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抛姑,老刑警劉巖赞厕,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異定硝,居然都是意外死亡皿桑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蔬啡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诲侮,“玉大人,你說我怎么就攤上這事箱蟆」敌鳎” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵空猜,是天一觀的道長绽慈。 經(jīng)常有香客問我恨旱,道長,這世上最難降的妖魔是什么坝疼? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任搜贤,我火速辦了婚禮,結(jié)果婚禮上裙士,老公的妹妹穿的比我還像新娘入客。我一直安慰自己,他們只是感情好腿椎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布桌硫。 她就那樣靜靜地躺著,像睡著了一般啃炸。 火紅的嫁衣襯著肌膚如雪铆隘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天南用,我揣著相機(jī)與錄音膀钠,去河邊找鬼。 笑死裹虫,一個(gè)胖子當(dāng)著我的面吹牛肿嘲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筑公,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼雳窟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了匣屡?” 一聲冷哼從身側(cè)響起封救,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捣作,沒想到半個(gè)月后誉结,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡券躁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年惩坑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片也拜。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旭贬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搪泳,到底是詐尸還是另有隱情稀轨,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布岸军,位于F島的核電站奋刽,受9級特大地震影響瓦侮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜佣谐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一肚吏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狭魂,春花似錦罚攀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镐牺,卻和暖如春炫掐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睬涧。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工募胃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人畦浓。 一個(gè)月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓痹束,卻偏偏與公主長得像,于是被迫代替她去往敵國和親讶请。 傳聞我的和親對象是個(gè)殘疾皇子祷嘶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354

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