美文网首页Android-NDK/JNI
JNI回调更新UI的方法

JNI回调更新UI的方法

作者: Peakmain | 来源:发表于2018-06-14 15:30 被阅读3次

jni.c中

JNIEXPORT void JNICALL Java_com_peakmain_ndkproject_MainActivity_callBackShowToast
        (JNIEnv *env, jobject job){
    //1.得到字节码
    jclass jclazz = (*env)->FindClass(env, "com/peakmain/ndkproject/MainActivity");//new出来就不是上下文
    //2.得到方法
    jmethodID jmethodID = (*env)->GetMethodID(env, jclazz, "showToast", "()V");
    //3.实例化该类
    //jobject jobject = (*env)->AllocObject(env, jclazz);
    //4.调用方法
    (*env)->CallVoidMethod(env, job, jmethodID);
}

MainActivity中

   /**
     * 让c代码调用Activity的showToast
     */
    public native void callBackShowToast();

    public void onClick(View view) {
         //mJNI.callbackAdd();
       // mJNI.helloFromJava();
        //mJNI.callbackPrintString();
        //mJNI.callbackSayHello();
        MainActivity.this.callBackShowToast();
    }



    public void showToast(){
        System.out.println("showToast----------------");
      Toast.makeText(MainActivity.this,"showToast----------------",Toast.LENGTH_SHORT).show();
    }

c调用java实际是反射实例化,更新UI的时候不能实例化因为new的对象的是没有上下文,此时虽然会打印但是会报空指针错误

相关文章

网友评论

    本文标题:JNI回调更新UI的方法

    本文链接:https://www.haomeiwen.com/subject/frryeftx.html