2012-03-16 15 views
6

Android OSにはandroid.os.Binder.javaというBinderProxyというクラスがあります。このクラスには、次の関数宣言があります。ネイティブjava関数呼び出しのソースコードを見つける方法

public native boolean transact(int code, Parcel data, Parcel reply, int flags) throws RemoteException; 

この関数が呼び出されたときに実行されるコードを知りたいと思います。

どうすればよいですか?

答えて

4

hereを見てください。これはこの機能を含むBinder.cppのソースコードです。

0

この場合、対応するスタブクラスのonTransactと呼ばれるメソッドが呼び出されます。 codeに基づいて、対応する実行のブランチに切り替わります。

+0

私はJavaを使い慣れていないので、あなたがスタブクラスと言うとき、クラスバインダーを意味するのでしょうか? – Jake

+0

呼び出される関数はどこにあるのか、バインダーの仕組みが分かりますか?トランザクションメソッドのコードがどこにあるかを調べようとすると、ここにあります:frameworks/base/libs/binder/Binder.cpp – Yury