Activity總結(jié)(1)

定義:

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

說(shuō)明:

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

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

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

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

onStart:可見(jiàn),但是沒(méi)焦點(diǎn)

onResume:得到焦點(diǎn)

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

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

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

onRestart:重啟

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

Activity被銷(xiāo)毀,進(jìn)程并不會(huì)被銷(xiāo)毀,這是為了下一次啟動(dòng)更快

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

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

paused 對(duì)應(yīng) onPause

stopped ?對(duì)面 OnStop

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

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

啟動(dòng)方式分為顯示啟動(dòng)隱式啟動(dòng)

顯示啟動(dòng):效率較高 常用啟動(dòng)方式

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

startActivity(intent);

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

Intent intent = new Intent();

intent.setAction(Intent.ACTION_DIAL);//啟動(dòng)系統(tǒng)自帶的撥號(hào)器應(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);//開(kāi)啟activity并且獲取返回值

B (Activity)

Intent data = new Intent();

data.putExtra("phone", phone);

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

A? ? (Activity)

//通過(guò)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會(huì)重新創(chuàng)建。

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

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

實(shí)際開(kāi)發(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)來(lái)判斷顯示方向.判定的策略是和設(shè)備相關(guān)的,所以不同的設(shè)備會(huì)有不同的顯示方向.

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

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

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

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

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

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

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


3.啟動(dòng)模式

Activity有四中啟動(dòng)模式

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

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

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

如果不在棧頂,則會(huì)跳轉(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是一種頁(yè)面內(nèi)跳轉(zhuǎn)協(xié)議,通過(guò)定義自己的scheme協(xié)議,可以跳轉(zhuǎn)到app中的各個(gè)頁(yè)面

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

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

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

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)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評(píng)論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,980評(píng)論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 64,064評(píng)論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,779評(píng)論 6 414
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 56,109評(píng)論 1 330
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評(píng)論 3 450
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 43,287評(píng)論 0 291
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評(píng)論 1 338
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,515評(píng)論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,750評(píng)論 1 375
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,933評(píng)論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,327評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,667評(píng)論 1 296
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,492評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,703評(píng)論 2 380

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