JNI是Java Native Interface的縮寫,是Java平臺的重要特性,使得Java代碼可以方便地與C/C++代碼編譯生成的動態鏈接庫進行交互。本文主要給出一份示例代碼(工程文件見附件),描述如何在Android的JNI層開啟一個線程,并在線程中回調Java層的函數。
創新互聯從2013年創立,是專業互聯網技術服務公司,擁有項目成都做網站、網站建設、外貿營銷網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元烏蘭察布做網站,已為上家服務,為烏蘭察布各地企業和個人服務,聯系電話:13518219792代碼主要分為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交流,或者關注我的新浪微博 @盧_俊 獲取最新的文章和資訊。
附件:http://down.51cto.com/data/2364058另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享文章:Android開發實踐:JNI層線程回調Java函數示例-創新互聯
轉載來于:http://vcdvsql.cn/article32/cdejsc.html
成都網站建設公司_創新互聯,為您提供用戶體驗、定制開發、虛擬主機、品牌網站建設、移動網站建設、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯