JNI入门(四): 高阶版

通过前面三个教程,大家应该能对JNI编程入门会有一个清晰的概念,但在工作或者商用时,仅用上述的方式是不够的,

因为java调用C++方法或者C++反射某些java方法时,经常会遇到访问某些变量或者对象的问题,而这是一个非常繁琐的过程,

如果采用手动编写,经常会出现因为手误或者其他原因导致莫名其妙的错误,而会花费大量的时间在这些无谓的事情上。

那Android系统是如何做的呢,难道Android也会采用这些原始的方法,一遍一遍的检查、测试吗?

答案很简单,肯定不是这样的。

其实针对这个问题,不同的开源软件都有不同的处理,例如ijkplayer,其是自己封装出来了一些API,

在阅读时,大家就会发现,因为其API是面向过程的,即产品的稳定是由开发人员对流程的把握以及编码水平决定的。

在Android系统中,Java与Native层交互更频繁,难道Android的亲爹google就没有考虑过这个问题吗?

大家先分别阅读一下Android5.0与Android6.0 framework wifi模块的源码

Android5.0 wifi native:

Android6.0 wifi native:

通过上面两份代码可以发现,google公司在这种场景下,对jni的使用做了一层封装,且Androd6.0要比Anrdoid5.0的

封装程度要高,从这一点也可以看出,google公司确实仔细考虑过这个问题,且做了一系列持续的优化。

这样的话,大家可以根据需要,将其借鉴到自己的项目中。

只要保证JNIHelper这个库的稳定,在日常工作时,开发人员只需把大量的精力放在业务逻辑处理上即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值