2017-01-21 10 views
1

Androidのアクティビティの開始方法と、アクティビティの開始時にフェードインアニメーションがどの程度正確に実装されるかについて興味があります。Android C++ソースをナビゲートする方法

Javaソースを簡単にナビゲートすることができます。また

public int startActivities(
    IApplicationThread caller, String callingPackage, ...); 

そして:

public void overridePendingTransition(
    IBinder token, String packageName, int enterAnim, int exitAnim); 

これらのコールの両方をネイティブコードにRPC定数を使用してGrepCodeに、と定義しIActivityManager.javaに私をもたらした活動の推移をオーバーライドする方法、ありますが分かりました以下のような:

int START_ACTIVITIES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+120; 

私の質問は:どこでstartActivitiesoverridePendingTransitionが実装されている実際のC++のコードを見つけることができますか?

Googleは何も返されず、AOSPコードベースが複数のGit repos(?)にまたがっていて、どのコードを調べるかわからないようです。

一般に、JavaインターフェイスからそのインターフェイスのC++実装にどのようにナビゲートしますか?

+1

http://androidxref.com/7.1.1_r6/を試しましたか? – pskink

+0

ありがとう!これで私はこのJavaファイルになりますが、そこからC++コードが呼び出されるのはわかりません:http://androidxref.com/7.1.1_r6/xref/frameworks/base/core/java/android/app/ActivityManagerNative.java# 3100 –

+0

ランダムに推測し、windowEnterTransitionを検索します。これは興味深いものです:http://androidxref.com/7.1.1_r6/search?q=windowentertransition&defs=&refs=&path=.+xml&hist=&project=abi&project=art&project=bionic&project=bootable&project=build&project=cts&project=dalvik&project=developers&project=プロジェクト&ツール=プロジェクト&ツール= –

答えて

1

対応する方法はframeworks/base/services/core/java/com/android/server/am/ActivityManagerService.javaに実装されています。このファイルに移動すると、メソッドの実装が見つかります。

このような珍しい場所を以下で説明します。 ActivityManagerServiceの場合、.aidlの説明を使用せずに、Binderインターフェイスが手動で実装されます。インターフェイスIActivityManager.javaは、抽象クラスActivityManagerNativeActivityManagerNative.javaに実装されています。実際の実装は実際にはActivityManagerService.javaで提供されています。

+1

ありがとうユリー! –

関連する問題