JNI是Java Native Interface的缩写,是Java平台的重要特性,使得Java代码可以方便地与C/C++代码编译生成的动态链接库进行交互。本文主要给出一份示例代码(工程文件见附件),描述如何在Android的JNI层开启一个线程,并在线程中回调Java层的函数。

代码主要分为Java层(java代码)和JNI层(c语言代码),首先看看Java层的代码(Native.java)。

如上所示,Java层与JNI层的接口代码主要封装在Native类中,该类定义了三个native函数,分别完成jni库的初始化,调用jni层开启线程,调用jni层关闭线程等功能。并且提供一个回调函数(onNativeCallback),供jni层调用,并在回调函数中打印count的值。

再看看JNI层是如何开启线程并回调Java层的(native.c),关键的地方都在代码中进行了注释:

1. 头文件包含和全局变量的定义

2. 初始化函数的实现

3. 开启关闭线程的实现

4. 线程的实现(关键)

由上述代码可以看到,JNI层通过pthread库完成了线程的创建,需要特别注意的是,JNI层的线程中,必须通过全局的JavaVM来获取到环境变量,也必须通过全局的jobject获取java类对象,从而找到java端的函数,进行回调。

代码的工程文件见附件,编译运行后,会在logcat调试窗口不断打印count的值。本文就介绍到这,主要是提供一份示例代码给初学者,有疑问欢迎留言或者来信lujun.hust@gmail.com交流。

Android开发实践:JNI层线程回调Java函数示例相关文件下载

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2014年资料/3月/3日/Android开发实践:JNI层线程回调Java函数示例

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

更多Android相关信息见Android 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=11


CSDN下载地址:

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. android 自动换行FlowLayout
  3. Android之——史上最简单图片轮播广告效果实现
  4. Winow&WindowManager
  5. Android的线程池:ExecutorService和Executors
  6. Android(安卓)通过反射随手可得的Application对象
  7. 【我的Android进阶之旅】使用Android(安卓)Studio 3.6 的 Androi
  8. C#、Golang、Python、Java(Android)之间Des、Rsa加解密互通系列之G
  9. 两分钟彻底让你明白Android(安卓)Activity生命周期

随机推荐

  1. android操作通讯录的联系人
  2. android > tabHost > 微博布局风格
  3. Android autoLink的注意点
  4. android 程序分享。。
  5. [Android UI] listview 自定义style
  6. Android 之 SeekBar用法介绍
  7. Android 7.1.2(Android N) Android系统启
  8. Android安装
  9. Android 控件常用属性
  10. JAVA & Android 系统环境变量配置