歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發實踐:JNI層線程回調Java函數示例

Android開發實踐:JNI層線程回調Java函數示例

日期:2017/3/1 9:47:40   编辑:Linux編程

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的值。本文就介紹到這,主要是提供一份示例代碼給初學者,有疑問歡迎留言或者來信[email protected]交流。

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

Copyright © Linux教程網 All Rights Reserved