关于JNI方面的代码实例讲解太少了,所以我决定自己整理一份,这篇文章我们主要讲讲Android Java层与Native层之间复杂对象传递的主要场景,主要分为:
- Java层向Native层传递
- Native层向Java层传递
Java层向Native层传递
1. Java层传递数组给Native
直接上代码,注释写的都很清楚,自己照着敲一遍基本就明白了:
Java层原型方法:
1 | public native void inputSortArray(int[] array); |
Native层方法实现:
1 | // 比较两个数的大小 |
2. Java层传递复杂对象给Native
Java层原型方法:
1 | public native void printStuInfoAtNative(Student stu); |
Student是一个静态内部类:
1 | public static class Student { |
Native层方法实现:
1 | //Java层传递复杂对象给Native |
Native层向Java层传递
1.Native层传递数组给Java层
Java层原型方法:
1 | public native int[] getArray(int len); |
Native层方法实现:
1 | //Native层传递数组给Java层 |
2.Native层传递二维数组给Java层
Java层原型方法:
1 | public native int[][] getTwoArray(int len); |
Native层方法实现:
1 | //Native层传递二维数组给Java层 |
3.Native层传递复杂对象给Java层
Java层原型方法:
1 | public native Student getStuInfo(); |
Native层方法实现:
1 | //Native层传递复杂对象给Java层 |
4.Native层传递集合对象给Java层
Java层原型方法:
1 | public native ArrayList<Student> getListStudents(); |
Native层方法实现:
1 |
|
这几种实例只是常见的几种数据交互的场景,后面会持续更新,敬请期待!
完整代码,希望这篇文章能帮助到你,喜欢记得star下,谢谢!