internal JavaObject(params object[] args) { if (args == null) { args = new object[0]; } mClass = CreateGlobalRef(FindClass(GetClass(GetType()))); string sign = GetSignature(null, args); jvalue[] jniArgArray = ConstructArgArray(args); try { IntPtr num = JNISafe.NewObject(mClass, AndroidJNIHelper.GetConstructorID(mClass, sign), jniArgArray); mObject = CreateGlobalRef(num); JNISafe.DeleteLocalRef(num); } finally { AndroidJNIHelper.DeleteJNIArgArray(args, jniArgArray); } }