【发布时间】:2015-07-03 15:17:41
【问题描述】:
在 Android JAVA 代码中:
public native int addRenderer(int channel, Object glSurface);
Context context = getApplicationContext();
SurfaceView svRemotePartyA = new SurfaceView(context);
SurfaceView svRemotePartyB = new SurfaceView(context);
addRenderer(0, svRemotePartyA);
addRenderer(1, svRemotePartyB);
在 Android JNI C++ 代码中:
extern "C" jint JNIEXPORT JNICALL Java_addRenderer(
JNIEnv* jni,
jobject j_vie,
jint channel,
jobject surface) {
LOG(LS_INFO) << "Java_addRenderer(): surface=" << surface;
// some processing
}
当我运行程序时,我总是阅读以下日志!两个 SurfaceView 对象在 JNI C++ 代码日志输出中具有相同的值:
(render_manager.cc:175): Java_addRenderer(): surface==0xbeed6120
(render_manager.cc:175): Java_addRenderer(): surface==0xbeed6120
有什么问题?
【问题讨论】:
-
System.out.println(System.identityHashCode(svRemotePartyA) + " " + System.identityHashCode(svRemotePartyB) ) 的输出是什么?在实例化之后、第一次调用 addRenderer 之前和之后以及第二次调用之前和之后。
标签: java android java-native-interface surfaceview