Android startActivity - 发生了什么

时间:2012-01-23 20:58:38

标签: android android-activity android-intent

引擎盖下发生了什么?不知何故,这会传递给操作系统,有些人会显示操作系统会找到合适的活动/活动,并启动它吗?是否在Android中运行服务/ lib处理此问题?我试图修改操作系统以全面覆盖startActivity的逻辑,这可能吗?

感谢。

3 个答案:

答案 0 :(得分:1)

我会看看Android源代码!无论何时我正在开发并遇到问题,我都会通过消息来源了解发生了什么事情;这很有趣!它可以深入了解实际情况,以及非常好的文档和代码格式指南!

http://source.android.com/source/downloading.html

答案 1 :(得分:0)

一个好的起点可能是ActivityManagerService

答案 2 :(得分:0)

基本上,首次启动应用时,startProcessLocked()中的ActivityManagerService会创建一个新的ProcessRecord(如果需要),然后调用Process.start(),然后调用zygoteSendArgsAndGetResult()构建参数对于zygote并使用GrepCode发送到zygote的套接字。当然还有更多的东西,例如,如果一个应用程序共享一个uid,被隔离,等等。但这给了你基本的过程。

查看来源确实是理解正在发生的事情的好方法。但是,除非您计划修改它,否则不要费心下载AOSP,只需使用{{3}}即可。更容易浏览,搜索和一切都是超链接,因此很容易跟进课程,找到用法,派生方法等。如果你下载AOSP,如果你很幸运,你会被困在grep,ack-grep和文本编辑。此外,您只会选择一个版本来结帐。 GrepCode几乎每个版本的代码都是1.5。

上面的链接文字将带您到GrepCode的相关来源。试试看!唯一的缺点是GrepCode不包含本机C ++层。