91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-07-26 21:13:49 來源:網絡 閱讀:12464 作者:Jhuster 欄目:移動開發

JNI是Java Native Interface的縮寫,是Java平臺的重要特性,使得Java代碼可以方便地與C/C++代碼編譯生成的動態鏈接庫進行交互。本文主要給出一份示例代碼(工程文件見附件),描述如何在Android的JNI層開啟一個線程,并在線程中回調Java層的函數。


代碼主要分為Java層(java代碼)和JNI層(c語言代碼),首先看看Java層的代碼(Native.java)。


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


如上所示,Java層與JNI層的接口代碼主要封裝在Native類中,該類定義了三個native函數,分別完成jni庫的初始化,調用jni層開啟線程,調用jni層關閉線程等功能。并且提供一個回調函數(onNativeCallback),供jni層調用,并在回調函數中打印count的值。


再看看JNI層是如何開啟線程并回調Java層的(native.c),關鍵的地方都在代碼中進行了注釋:


   1. 頭文件包含和全局變量的定義

           

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

         

   2. 初始化函數的實現

             

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


   3. 開啟關閉線程的實現

 

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

                                           

 4. 線程的實現(關鍵)


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


   由上述代碼可以看到,JNI層通過pthread庫完成了線程的創建,需要特別注意的是,JNI層的線程中,必須通過全局的JavaVM來獲取到環境變量,也必須通過全局的jobject獲取java類對象,從而找到java端的函數,進行回調。


   代碼的工程文件見附件,編譯運行后,會在logcat調試窗口不斷打印count的值。本文就介紹到這,主要是提供一份示例代碼給初學者,有疑問歡迎留言或者來信lujun.hust@gmail.com交流,或者關注我的新浪微博 @盧_俊 獲取最新的文章和資訊。


附件:http://down.51cto.com/data/2364058
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

元阳县| 合江县| 台东市| 蒲江县| 观塘区| 莱阳市| 乌拉特中旗| 涡阳县| 黑水县| 汾西县| 韶山市| 安康市| 南投市| 海林市| 临朐县| 边坝县| 左云县| 满洲里市| 肥东县| 新兴县| 德庆县| 太白县| 泾源县| 两当县| 越西县| 彭州市| 六枝特区| 彝良县| 上蔡县| 乌海市| 博湖县| 会理县| 海盐县| 沾益县| 盘山县| 凯里市| 阜新市| 社旗县| 北京市| 宿松县| 沂南县|