Hi All,

I ported one muti-threaded native code (binary) to android platform,
and is working fine,

Now i am trying to run this code by creating apk, created my native
code as shared library using NDK and
i am calling this shared library by using JNI, below is the sample
code,

But it is not working, i am new to java and jni, i did some web
search,  and i found that i need to attache/detach threads in jni,

It will be very helpful if someone help me to handle this native
threads in jni.


Thanks




/************************** apk code
***************************************/
public class HelloJni extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        TextView  tv = new TextView(this);
        tv.setText( stringFromJNI() );
        setContentView(tv);
    }
    public native String  stringFromJNI();

    static {
        System.loadLibrary("my_lib");
    }
}

/****************************** JNI function
************************************/
jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject
thiz)
{
                        int rc = native_main();
                        if (rc == 0)
                             return (*env)->NewStringUTF(env, "Successful!");
                        else
                            return (*env)->NewStringUTF(env, "Failure!");
}

/********************************* Native code
***********************************/
int
native_main()
{
        int cnt;
        pthread_t thread;
        for (cnt =0; cnt < 5; cnt++)
        {
                if ( 0 != pthread_create (&thread1, NULL, (void *) &my_function,
(void *) cnt))
                {
                        return -1;
                }
        }
        pthread_exit(0); /* exit */
        return 0;
}

void my_function(void* cnt)
{
        int c = (int) cnt;

        switch (c)
        {
                case 0:
                                /* calling native funtion1 */
                        break;
                case 1:
                                /* calling native funtion2 */
                        break;
                case 2:
                                /* calling native funtion3 */
                        break;
                case 3:
                                /* calling native funtion4 */
                        break;
                case 4:
                                /* calling native funtion5 */
                        break;
        }
}

/******************************************************************/

-- 
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting

Reply via email to