最近在學習Android平臺的JNI(Java Native Interface,供java調用其他平臺如c/c++的代碼,或者c/c++調用java),參考了其他人的資料後,發現Android平臺下的JNI有兩種方式,靜態註冊和動態註冊。
由於項目要Android調用一個C語言的 庫,且項目比較成熟,所以選用靜態方法,下面的例子也會用靜態方法(網上普遍的方法)。
一、Android JNI開發環境的搭建
二、JNI對手機CPU的影響
項目裏,手機通過JNI調用一個C語言寫的算法,結果在某些手機(華爲,聯想)運行時app很容易沒響應而崩潰,一直找不出原因,後來才發現,是JNI 吃掉了很大部分的CPU使用率:
通過JNI開啓調用後(藍色爲樓主的app佔用率)
後來也懷疑是否算法本身佔用太多CPU,但沒給數據讓算法處理的時候,CPU也高居不下:
把JNI調用部分代碼註釋掉後的使用率:(深藍色)
看來還是要進一步優化了。
ps:如果用到JNI後,app被拖慢很多,請仔細考慮JNI調用的方法和時機了。