Activity啟動流程和原始碼解析

2021-10-05 04:23:05 字數 2632 閱讀 5678

↓雙擊 markdown外掛程式,就可以開始編輯啦。

public

static

void

main

(string[

] args)

在attach方法中主要做了以下重要的事情:

final iactivitymanager mgr = activitymanager.

getservice()

;try

catch

(remoteexception ex)

public

final

void

long startseq)

}

activitythread的啟動流程
/**

* the main entry point from zygote.

*/public

static

void

main

(string[

] args)

在system_process程序啟動的時候就會初始化一些系統服務,例如activitymanagerservice:

通過localsocket來用命令的方式啟動process

}}activity啟動流程總結為什麼會有activitynotfoundexception這個異常

實現外掛程式化啟動activity如何解決這個問題?

如何尋找hook點?

activity啟動流程的hook點(針對android9.0以上)

method getservicemethod = activitymanager.

class

.getdeclaredmethod

("getservice");

getservicemethod.

setaccessible

(true);

object iactivitymanagerobj = getservicemethod.

invoke

(activitymanager.

class

, null)

; field iactivitymanagersingleton = activitymanager.

class

.getdeclaredfield

("iactivitymanagersingleton");

iactivitymanagersingleton.

setaccessible

(true);

object iactivitymanagersingletonobj = iactivitymanagersingleton.

get(activitymanager.

class);

class<

?> singletoncls = class.

forname

("android.util.singleton");

field minstance = singletoncls.

getdeclaredfield

("minstance");

minstance.

setaccessible

(true);

class<

?> iactivitymanagerinte***ce = class.

forname()

; object iactivitymanagerproxy = proxy.

newproxyinstance

(activitymanager.

class

.getclassloader()

,new

class

<

?>

,new

iactivitymanagerhandler

(iactivitymanagerobj));

minstance.

set(iactivitymanagersingletonobj, iactivitymanagerproxy)

;

Activity啟動流程

0x01 public void startactivity intent intent 最終走到 public void startactivityforresult requirespermission intent intent,int requestcode,nullable bundle ...

Activity啟動流程

activity啟動流程很多文章都已經說過了,這裡說一下自己的理解。activity啟動流程分兩種 後邊啟動activity的流程是一樣的,區別是前邊判斷程序是否存在的那部分。activity啟動的前提是已經開機,各項程序和ams等服務已經初始化完成,在這裡也提一下那些內容。ipc 跨程序通訊,an...

activity啟動流程

所有程序都是由init程序直接或間接fork出來的 android系統啟動時,init程序會fork出zygote,意為 受精卵 後面的所有程序都是zygote 出來的 在zygote程序初始化時會啟動systemserver程序,平時所用到的ams pms wms 網路等服務都是在systemse...