真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

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

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

創(chuàng)新互聯服務項目包括響水網站建設、響水網站制作、響水網頁制作以及響水網絡營銷策劃等。多年來,我們專注于互聯網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯網行業(yè)的解決方案,響水網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到響水省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!


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

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

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


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


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

           

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

         

   2. 初始化函數的實現

             

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

   3. 開啟關閉線程的實現

 

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

                                           

 4. 線程的實現(關鍵)

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

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

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

附件:http://down.51cto.com/data/2364058

文章題目:Android開發(fā)實踐:JNI層線程回調Java函數示例
鏈接地址:http://weahome.cn/article/pjhidd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部