我试图了解 Android System Server 中的活动启动。当我们使用语句 startActivity(intent); 时的流程是什么?在我们的代码中,活动的 onCreate() 被执行。我知道 onCreate() 之后的流程。
Android的框架端发生了一些事情,是什么?
我试图了解 Android System Server 中的活动启动。当我们使用语句 startActivity(intent); 时的流程是什么?在我们的代码中,活动的 onCreate() 被执行。我知道 onCreate() 之后的流程。
Android的框架端发生了一些事情,是什么?
点击事件被翻译成 startActivity(intent) 调用,该调用通过 Binder IPC 路由到 ActivityManagerService 中的 startActivity(intent) 调用。ActvityManagerService 采取了一些措施 -
resolveIntent()
方法完成的,PackageManager object
并且默认使用 PackageManager.GET_SHARED_LIBRARY_FILES 标志。grantUriPermissionLocked()
方法来完成的。ActivityManagerService
检查目标活动是否需要在新任务中启动。任务创建取决于 Intent 标志,FLAG_ACTIVITY_NEW_TASK
例如FLAG_ACTIVITY_CLEAR_TOP
.ProcessRecord
进程是否已经存在了。希望这能解决您的疑问。
对于“确切的流程”,请参阅公开可用的来源。您可以将源附加到您的 IDE,以便您可以在平台中调试步骤。或者您可以浏览 GitHub 上的源代码。
具体来说,要了解如何Activity.onCreate()
调用,看看android.app.Instrumentation
它的callActivityOnCreate()
方法。