Android開發(fā)實(shí)踐:JNI層線程回調(diào)Java函數(shù)示例-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元烏蘭察布做網(wǎng)站,已為上家服務(wù),為烏蘭察布各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

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

Android開發(fā)實(shí)踐:JNI層線程回調(diào)Java函數(shù)示例

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

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

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

Android開發(fā)實(shí)踐:JNI層線程回調(diào)Java函數(shù)示例

  2. 初始化函數(shù)的實(shí)現(xiàn)

Android開發(fā)實(shí)踐:JNI層線程回調(diào)Java函數(shù)示例

  3. 開啟關(guān)閉線程的實(shí)現(xiàn)

Android開發(fā)實(shí)踐:JNI層線程回調(diào)Java函數(shù)示例

 4. 線程的實(shí)現(xiàn)(關(guān)鍵)

Android開發(fā)實(shí)踐:JNI層線程回調(diào)Java函數(shù)示例

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

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

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

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享文章:Android開發(fā)實(shí)踐:JNI層線程回調(diào)Java函數(shù)示例-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://bm7419.com/article32/cdejsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、定制開發(fā)虛擬主機(jī)、品牌網(wǎng)站建設(shè)移動(dòng)網(wǎng)站建設(shè)、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營