我对Android如何开始活动感兴趣,以及在开始活动时如何实现淡入动画。
我可以轻松导航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 repos(?)上,并且不知道要查看哪个。
一般来说,如何从Java接口导航到该接口的C ++实现?
答案 0 :(得分:1)
相应的方法在frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
中实现。转到此文件,您将找到方法的实现。
这种不寻常的位置解释如下。在ActivityManagerService的情况下,Binder接口是手动实现的,不使用.aidl描述。接口IActivityManager.java
由ActivityManagerNative
中的抽象类ActivityManagerNative.java
实现,其实际实现实际上在ActivityManagerService.java
中提供。