[英]How to navigate Android C++ sources
我对 Android 如何启动 Activity 以及在启动 Activity 时如何实现淡入动画很感兴趣。
我可以轻松地浏览 Java 源代码,例如在 GrepCode 上,并发现有一种方法可以覆盖活动转换,这使我进入了IActivityManager.java ,它定义了:
public int startActivities(
IApplicationThread caller, String callingPackage, ...);
并且:
public void overridePendingTransition(
IBinder token, String packageName, int enterAnim, int exitAnim);
这两个都使用 RPC 常量调用本机代码,例如:
int START_ACTIVITIES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+120;
我的问题是:在哪里可以找到实现startActivities
和overridePendingTransition
的实际 C++ 代码?
Google 什么也没有返回,看起来 AOSP 代码库分布在多个 Git 存储库 (?) 中,并且不知道要查看哪一个。
通常,您如何从 Java 接口导航到该接口的 C++ 实现?
相应的方法在frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
。 转到此文件,您将找到方法的实现。
这种不寻常的位置解释如下。 对于 ActivityManagerService,Binder 接口是手动实现的,不使用 .aidl 描述。 接口IActivityManager.java
由抽象类实现ActivityManagerNative
在ActivityManagerNative.java
,实际执行这在实际上是提供ActivityManagerService.java
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.