Android學(xué)習(xí)筆記(1)-四大組件之Activity

Android的四大組件Activity,Service,Broadcast,Content Provider想必大家都不陌生了,今天在這里給大家詳解一下Activity的相關(guān)知識(shí)點(diǎn)。

應(yīng)用的主活動(dòng)

在AndroidMainfest清單文件中,我們可以將一個(gè)活動(dòng)設(shè)置為應(yīng)用啟動(dòng)的默認(rèn)主活動(dòng),也就是進(jìn)入這個(gè)應(yīng)用的入口??稍赼pplication標(biāo)簽中,將你需要設(shè)置的activity的對(duì)應(yīng)標(biāo)簽中的intent-filter元素聲明中將action設(shè)置為如下代碼.

<action android:name="android.intent.action.MAIN">

四種啟動(dòng)方式

在AndroidMainfest清單文件里我們可以在activity標(biāo)簽內(nèi)設(shè)置android:launchMode來(lái)進(jìn)行啟動(dòng)方式的設(shè)置,四種啟動(dòng)方式分別如下:

標(biāo)準(zhǔn)模式(standard)

standard是系統(tǒng)默認(rèn)的啟動(dòng)方式,以這種方式啟動(dòng)的activity會(huì)在任務(wù)棧中直接創(chuàng)建一個(gè)新的實(shí)例,不管之前在任務(wù)棧中有沒(méi)有重新創(chuàng)建.

棧頂復(fù)用模式(singleTop)

singleTop正如其名,當(dāng)新啟動(dòng)的activity已經(jīng)存在于任務(wù)棧棧頂,那么就不會(huì)再創(chuàng)建新的實(shí)例,而是直接調(diào)用onNewIntent()方法,如果不存在于任務(wù)棧棧頂,那么就重新創(chuàng)建一個(gè)實(shí)例加入任務(wù)棧中。

棧內(nèi)復(fù)用模式(singleTask)

singleTask正如其名,當(dāng)新啟動(dòng)的activity已經(jīng)存在于任務(wù)棧中,那么就不會(huì)再創(chuàng)建新的實(shí)例,而是直接調(diào)用onNewIntent()方法,并且關(guān)閉這個(gè)activity之上的任務(wù)棧中的activity,舉例如果按順序打開了A-B-C三個(gè)頁(yè)面,那么以此種方式啟動(dòng)B,就會(huì)將C出棧,并且調(diào)用B的onNewIntent()方法,如果不存在于任務(wù)棧中,那么就重新創(chuàng)建一個(gè)實(shí)例加入任務(wù)棧中.(ps:之前筆者開發(fā)過(guò)程中就因?yàn)橹黜?yè)的啟動(dòng)方式是singleTask,導(dǎo)致了某一個(gè)bug把主頁(yè)給出棧了,因此啟動(dòng)方式的了解是非常重要的 !!!)

單例模式(singleInstance)

這種啟動(dòng)方式比較特別,以這種方式啟動(dòng)的activity會(huì)單獨(dú)運(yùn)行于一個(gè)任務(wù)棧中,這個(gè)任務(wù)棧只會(huì)存在它一個(gè)實(shí)例。

打開一個(gè)Activity

打開activity采用Intent的方式,可以通過(guò)給Intent設(shè)置Bundle對(duì)象來(lái)傳遞你想要傳遞給下一個(gè)界面的值,但在日常開發(fā)中activty可能會(huì)復(fù)用,這樣傳值會(huì)導(dǎo)致前后打開的頁(yè)面耦合度太高,容易造成空指針的問(wèn)題,因此不建議采用Bundle的方式向下一個(gè)頁(yè)面,最好采用其他方式,例如以將一些公共數(shù)據(jù)利用SharedPreference存儲(chǔ)。代碼如下:

Intent intent= new Intent(ActivityA.this,ActivityB.class);//通過(guò)Intent的Flag設(shè)置
intent.addFlags(Intent,FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

生命周期

一個(gè)完整的Activity的生命周期包含了以下方法。

onCreate()

onStart()

onResume()

onPause()

onStop()

onRestart()

onDestroy()

兩個(gè)Activity切換時(shí)的生命周期變化

A切換到B

A:onCreate() -- onStart() -- onResume() -- onPause()

B:onCreate -- onStart() -- onResume()

A:onStop() -- onStop() 方法只會(huì)在A不可見(jiàn)時(shí)調(diào)用,如果透明可見(jiàn)則不調(diào)用

B返回到A(按下返回鍵)

B:onPause()

A:onRestart() -- onStart() -- onResume()

B:onStop() -- onDestroy()

Activity的知識(shí)點(diǎn)就暫時(shí)總結(jié)到這個(gè)地方啦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 學(xué)習(xí)Android有一段時(shí)間了,但可能是因?yàn)闆](méi)有及時(shí)地進(jìn)行歸納總結(jié),很多東西掌握得并不是很好,遇到問(wèn)題時(shí)往往花費(fèi)的...
    RumbleTsc閱讀 1,084評(píng)論 4 17
  • 1. Activity是什么?2. 生命周期1). Activity跳轉(zhuǎn)2). 從后臺(tái)啟動(dòng)3). 橫豎屏切換3. ...
    IT老五閱讀 485評(píng)論 0 3
  • Activity簡(jiǎn)介 Activity是Android一個(gè)非常重要的用戶接口(四大組件之一),是可見(jiàn)的,主要是用戶...
    艾曼大山閱讀 567評(píng)論 0 3
  • 該系列主要是記錄、回顧之前的學(xué)習(xí)和一些筆記。轉(zhuǎn)載請(qǐng)注明! Activity在應(yīng)用中的表現(xiàn)為界面,它會(huì)加載指定的布局...
    Angki閱讀 422評(píng)論 0 0
  • 第一幕:那一天,我以為自己找到了大神,我在神前聲淚俱下的懺悔,淚流滿面。我以為我到了超脫的時(shí)間點(diǎn)。 第二幕:神接納...
    每昵琛閱讀 480評(píng)論 2 1

友情鏈接更多精彩內(nèi)容