国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Activity啟動(dòng)流程分析

這篇具有很好參考價(jià)值的文章主要介紹了Activity啟動(dòng)流程分析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


一、activity跨進(jìn)程啟動(dòng)

Activity啟動(dòng)流程分析

  • 點(diǎn)擊桌面App圖標(biāo),Launcher進(jìn)程采用Binder IPC向system_server進(jìn)程發(fā)起startActivity請(qǐng)求
  • system_server進(jìn)程接收到請(qǐng)求后,向zygote進(jìn)程發(fā)送創(chuàng)建進(jìn)程的請(qǐng)求;
    Zygote進(jìn)程fork出新的子進(jìn)程,即App進(jìn)程
  • App進(jìn)程,通過(guò)Binder IPC向sytem_server進(jìn)程發(fā)起attachApplication請(qǐng)求;
  • system_server進(jìn)程在收到請(qǐng)求后,進(jìn)行一系列準(zhǔn)備工作后,再通過(guò)binder IPC向App進(jìn) 程發(fā)送scheduleLaunchActivity請(qǐng)求
  • App進(jìn)程的binder線程(ApplicationThread)在收到請(qǐng)求后,通過(guò)handler向主線程發(fā)送LAUNCH_ACTIVITY消息
  • 主線程在收到Message后,通過(guò)發(fā)射機(jī)制創(chuàng)建目標(biāo)Activity,并回調(diào)Activity.onCreate()等方法

二、activity進(jìn)程內(nèi)啟動(dòng)

1.相關(guān)類(lèi)

  • ActivityThread:main()函數(shù),相當(dāng)于一個(gè)Handler,主線程,UI線程
  • ApplicationThread:與AMS溝通橋梁
  • mInstrumentation:通過(guò)這個(gè)api啟動(dòng)app,用來(lái)跟蹤Activity和Application生命周期的類(lèi)
  • AMS:數(shù)據(jù)管理者

2.啟動(dòng)流程

請(qǐng)求進(jìn)程A:startActivity—(hook插入點(diǎn)1) (AMP,ActivityManager代理對(duì)象)——> system_server進(jìn)程:AMS(ActivityManagerService)解析Activity信息、處理啟動(dòng)參數(shù)、scheduleLaunchActivity/mH中EXECUTE_TRANSACTION消息處理(Android P)–>回到請(qǐng)求進(jìn)程A:ApplicationThread --> ActivityThread -(hook插入點(diǎn)2)-> Activity生命周期

簡(jiǎn)單點(diǎn)來(lái)說(shuō)就是通過(guò)AMS代理類(lèi),封裝創(chuàng)建Activity的信息,然后回調(diào)給ActivityThread,通過(guò)mInstrumentation創(chuàng)建Activity,調(diào)用onCreate方法啟動(dòng)Activity


三、顯式啟動(dòng)和隱式啟動(dòng)

1.顯式啟動(dòng)

1、構(gòu)造方法傳入Component,最常用的方式
2、setComponent(componentName)方法
3、setClass/setClassName方法

2.隱式啟動(dòng)

隱式Intent是通過(guò)在AndroidManifest文件中設(shè)置action、data、category,讓系統(tǒng)來(lái)篩選出合適的Activity文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-493958.html

		<activity
            android:name="com.juexiao.fakao.ui.activity.WelcomeActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            
            <intent-filter>
        		<action android:name="com.jrmf360.action.ENTER"/>
        		<category android:name="android.intent.category.DEFAULT"/>
        		<data
            		android:host="jrmf360.com"
            		android:port="8888"
            		android:scheme="jrmf"/>
    		</intent-filter>
        </activity>

action匹配規(guī)則

  • Intent-filter action可以設(shè)置多條
  • intent中的action只要與intent-filter其中的一條匹配成功即可,且intent中action最多只有一條
  • Intent-filter內(nèi)必須至少包含一個(gè)action

category匹配規(guī)則

  • Intent-filter內(nèi)必須至少包含一個(gè)category,android:name為android.intent.category.DEFAULT
  • intent-filter中,category可以有多條
  • intent中,category也可以有多條
  • intent中所有的category都可以在intent-filter中找到一樣的(包括大小寫(xiě))才算匹配成功

data匹配規(guī)則

  • intent-filter中可以設(shè)置多個(gè)data
  • intent中只能設(shè)置一個(gè)data
  • intent-filter中指定了data,intent中就要指定其中的一個(gè)data

到了這里,關(guān)于Activity啟動(dòng)流程分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Activity 的啟動(dòng)流程(Android 13)

    Activity 的啟動(dòng)流程(Android 13)

    Activity 的啟動(dòng)過(guò)程分為兩種:一種是普通 Activity 的啟動(dòng)過(guò)程,另一種是根 Activity 的啟動(dòng)過(guò)程。普通 Activity 指的是除應(yīng)用程序啟動(dòng)的第一個(gè) Activity 之外的其他 Activity。 根 Activity 指的是應(yīng)用程序啟動(dòng)的第一個(gè) Activity,因此,根 Activity 的啟動(dòng)過(guò)程一般情況下也可以理解為應(yīng)用程

    2024年02月11日
    瀏覽(31)
  • adnroid 11. 0 Activity啟動(dòng)流程圖解

    adnroid 11. 0 Activity啟動(dòng)流程圖解

    從Launcher到ActivityTaskManager 從ActivityTaskManagerService 到 ApplicationThread 從ApplicationThread到onCreate

    2024年02月15日
    瀏覽(22)
  • Android Activity 啟動(dòng)流程 二:setContentView

    Android Activity 啟動(dòng)流程 二:setContentView

    關(guān)于作者:CSDN內(nèi)容合伙人、技術(shù)專(zhuān)家, 從零開(kāi)始做日活千萬(wàn)級(jí)APP。 專(zhuān)注于分享各領(lǐng)域原創(chuàng)系列文章 ,擅長(zhǎng)java后端、移動(dòng)開(kāi)發(fā)、商業(yè)變現(xiàn)、人工智能等,希望大家多多支持。 接 - 上 篇,Activity創(chuàng)建后,還只是調(diào)用了onCreate方法,頁(yè)面并沒(méi)有展示出來(lái),還需要調(diào)用setContentVie

    2024年02月10日
    瀏覽(22)
  • Android Activity的啟動(dòng)流程(Android-10)

    Android Activity的啟動(dòng)流程(Android-10)

    在Android開(kāi)發(fā)中,我們經(jīng)常會(huì)用到startActivity(Intent)方法,但是你知道startActivity(Intent)后Activity的啟動(dòng)流程嗎?今天就專(zhuān)門(mén)講一下最基礎(chǔ)的startActivity(Intent)看一下Activity的啟動(dòng)流程,同時(shí)由于Launcher的啟動(dòng)后續(xù)和這里基本類(lèi)似,就記錄在一起。注意本章都是基于Android-10來(lái)講解的。

    2024年01月17日
    瀏覽(21)
  • Activity啟動(dòng)過(guò)程詳解(Android 12源碼分析)

    Activity啟動(dòng)過(guò)程詳解(Android 12源碼分析)

    啟動(dòng)一個(gè)Activity,通常有兩種情況,一種是在應(yīng)用內(nèi)部啟動(dòng)Activity,另一種是Launcher啟動(dòng) 1、應(yīng)用內(nèi)啟動(dòng) 通過(guò)startActivity來(lái)啟動(dòng)Activity 啟動(dòng)流程: 一、Activity啟動(dòng)的發(fā)起 二、Activity的管理——ATMS 三、線程切換即消息處理——mH 四、Activity啟動(dòng)核心實(shí)現(xiàn)——初始化及生命周期 2、

    2024年02月13日
    瀏覽(26)
  • android_adb pm和adb am@啟動(dòng)Activity@殺死app進(jìn)程@凍結(jié)或卸載系統(tǒng)更新和應(yīng)用商店

    Android 調(diào)試橋 (adb) | Android 開(kāi)發(fā)者 | Android Developers (google.cn) 這部分文檔并不包含所有的指令功能的介紹 可以和命令行的 --help 選項(xiàng)的本地文檔一同查閱 運(yùn)行方式有兩種 不進(jìn)入shell直接運(yùn)行 每次執(zhí)行命令(issue command)需要帶上adb shell開(kāi)頭的前綴 例如: adb shell pm list packages -s -d|nl

    2024年02月03日
    瀏覽(52)
  • adb 命令獲取當(dāng)前頁(yè)面的Activity,啟動(dòng)某個(gè)Activity

    每次找來(lái)找去太麻煩,再次記錄一下

    2024年01月18日
    瀏覽(56)
  • Activity詳細(xì)解釋?zhuān)ㄉ芷?、以各種方式啟動(dòng)Activity、狀態(tài)保存,等完全退出)

    Activity詳細(xì)解釋?zhuān)ㄉ芷?、以各種方式啟動(dòng)Activity、狀態(tài)保存,等完全退出)

    簡(jiǎn)單的說(shuō):Activity或者懸浮于其它窗體上的交互界面。 在一個(gè)應(yīng)用程序中通常由多個(gè)Activity構(gòu)成。都會(huì)在Manifest.xml中指定一個(gè)主的Activity,例如以下設(shè)置 actionandroid:name=”android.intent.action.MAIN” / 當(dāng)程序第一次執(zhí)行時(shí)用戶就會(huì)看這個(gè)Activity,這個(gè)Activity能夠通過(guò)啟動(dòng)其它的Activi

    2024年02月04日
    瀏覽(29)
  • Android Activity啟動(dòng)過(guò)程詳解

    Android Activity啟動(dòng)過(guò)程詳解

    1,《android系統(tǒng)啟動(dòng)流程簡(jiǎn)介》 2,《android init進(jìn)程啟動(dòng)流程》 3,《android zygote進(jìn)程啟動(dòng)流程》 4,《Android SystemServer進(jìn)程啟動(dòng)流程》 5,《android launcher啟動(dòng)流程》 6,《Android Activity啟動(dòng)過(guò)程詳解》 1,《Android 源碼下載和編譯》 2,《android 11源碼編譯和pixel3 刷機(jī)》 3,《Andro

    2024年02月09日
    瀏覽(20)
  • Android 后臺(tái)啟動(dòng)Activity適配

    在Android 9及以下版本,后臺(tái)啟動(dòng)Activity相對(duì)自由,但是如果在Activity上下文之外啟動(dòng)Activity會(huì)有限制。 所以此時(shí)需要給intent添加flag:FLAG_ACTIVITY_NEW_TASK。 在Android版本10及以后版本, 引入了后臺(tái)執(zhí)行限制,限制了應(yīng)用在后臺(tái)執(zhí)行操作的能力。非核心任務(wù)的后臺(tái)啟動(dòng) Activity 可能會(huì)

    2024年02月10日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包