美文网首页JavaAndroid开发经验谈Android开发
JNI开发系列(三、JNI调用Java方法)

JNI开发系列(三、JNI调用Java方法)

作者: 长空_ca51 | 来源:发表于2017-10-29 18:54 被阅读32次

记得第一节的简单Demo吧,那是JNI开发的典型流程,是Java调用C++的流程,那这一节我们来看看C++代码调用Java方法,我们还是使用上次那个Demo吧。

首先,我们在NDKTest.java中添加两个静态方法,一个方法用于本次测试的入口,一个方法用于提供给C++代码调用的,如下图:

然后我们在C++的代码文件中加入callJavaInstaceMethod的对应方法,如下图:

在此方法中我们进行了对Java方法的调用。上面这段代码的关键点我已经勾出来了,使用程序首先env->FindClass根据类名com/iflytek/wcquan/jnitest/NdkTest找到类,然后使用env->GetStaticMethodID类中的找到方法,接着再通过env对象的CallStaticVoidMethod方法来完成最终的调用过程。

其中,GetStaticMethodID方法的参数是这样的:

jmethodID GetStaticMethodID(jclass clazz,const char* name,const char* sig)

第一个参数是指类,就是要找的哪个类;第二个参数调用的方法名,  参数三是方法的签名,例子中其中(Ljava/lang/String;)V是calledByJni方法的签名。

最后一步,我们在MainActity.java中来调用了,如下图:

运行后,我们可以看到

整个C++调用Java方法的流程就结束了,后面章节的内容会是原理部分和 深入底层的实现

相关文章

  • JNI开发系列(三、JNI调用Java方法)

    记得第一节的简单Demo吧,那是JNI开发的典型流程,是Java调用C++的流程,那这一节我们来看看C++代码调用...

  • JNI开发系列④C语言调用构造方法

    接续上篇JNI开发系列③C语言调用Java字段与方法 前情提要 Java调用C方法很简单 , 只需要编写nativ...

  • JNI与底层调用1

    JNI开发系列阅读 JNI与底层调用1 JNI与底层调用2 C/C++在Android开发中的应用 1. JNI ...

  • Android JNI学习手册

    一、JNI基础学习-JNI调用java原生方法 JNI调用java原生方法有四个重要的东西 一、class 类信息...

  • NDK开发基础①使用Android Studio编写NDK

    接续上个系列之 [ JNI开发系列 ]:JNI开发系列①JNI概念及开发流程JNI开发系列②.h头文件分析JNI开...

  • JNI与底层调用2

    JNI开发系列阅读 JNI与底层调用1 JNI与底层调用2 C/C++在Android开发中的应用 1. 掌握如何...

  • C/C++在Android开发中的应用

    JNI开发系列阅读 JNI与底层调用1 JNI与底层调用2 C/C++在Android开发中的应用 1. 前言 1...

  • 1. java的数据类型的签名

    开发jni经常需要在jni层调用java层的方法,或者创建引用,这个时候就需要用到java的属性或者方法的签名,详...

  • 安卓开发通过JNI调用本地方法

    今天开发中第一次接触到对jni方法的调用,特此记录在开发踩过的坑。 java通过JNI调用c/c++编写的本地方法...

  • JNI简介

    @[TOC](JNI简介) # 一、简介 ## 1. 什么是JNI JNi就是java调用本地方法的技术,最简单的...

网友评论

    本文标题:JNI开发系列(三、JNI调用Java方法)

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