This issue will come up whether or not you are using Android.  JNI can
be used on any JVM that supports it and will have the same semantics
and requirements.  Android is in no way special to what you're asking.

You should try consulting a JNI specification or reading something
like this:

http://java.sun.com/docs/books/jni/html/jniTOC.html

Doug

On Jan 16, 1:34 am, M J <fakeacc...@googlemail.com> wrote:
> Hey,
>
> hmmm, I do not think so. I just want to know how to call a Java method
> from C without having the jobject. Can I cache it when I previously
> got it as parameter?
>
> On 16 Jan., 09:11, FrankG <frankgru...@googlemail.com> wrote:
>
>
>
>
>
>
>
> > Hello !
>
> > It seems for me, that your question is not really  ndk and android
> > related,
> > instead more or less something related to Reflection and the Dynamic
> > Invocation API.
>
> > Good luck ! Frank
>
> > On 13 Jan., 11:11, M J <fakeacc...@googlemail.com> wrote:
>
> > > Hey guys,
>
> > > I nned your help. I am currently developing an application which uses
> > > JNI and native sockets. The problem is that I have to call Java code
> > > if some packages arrive on the native socket connection. Currently I
> > > am using CallVoidMethod to do that. The JNIEnv cannot be cached so I
> > > get it like this:
>
> > > inline JNIEnv *get_env()
> > > {
> > >         JNIEnv *env;
> > >         jvm->GetEnv((void **)&env, JNI_VERSION_1_4);
> > >         return env;
>
> > > }
>
> > > The jmethodID I is cached and initialized on startup. My only problem
> > > now is, how can I get the jobject? Currently I am making a global
> > > reference on the parameter jobject thiz, which is passed to my init
> > > function.
>
> > > Is this okay? I am asking because I am having some trouble with that,
> > > eg. the reference to the local and the global obj are exactly the
> > > same. And when I a call DeleteGlobalRef on the global reference there
> > > is a warning in the log cat output that this reference does not exist
> > > and the app crashes.
>
> > > I also tried using the local reference but then the CallVoidMethod
> > > crashes and the output says this reference does not exist, so I think
> > > I am on the right way.
>
> > > Thanks in advance!

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to