最近在学习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调用的方法和时机了。