19、Java JNI与Android Binderized HAL技术解析

Java JNI与Android Binderized HAL解析

Java JNI与Android Binderized HAL技术解析

1. Java JNI相关要点

1.1 传感器对象清理保证

在使用传感器对象时,即使客户端代码未能关闭传感器对象, cleanup(AtomicLong) 方法也会被调用,以释放本地伴生对象。这里有两个需要注意的微妙点:
- AtomicLong引用数量 AtomicLong 包含对本地对等对象的句柄,需要有多个引用指向它。若 AcmeProximitySensor 持有唯一引用,当它不可达时, AtomicLong 可能在传感器对象本身之前被释放,而 SensorCleaner 若不持有引用,就无法找到本地对象。
- 客户端显式关闭情况 :当行为良好的客户端显式关闭传感器对象时,其 SensorCleaner 会从映射中移除。此时,清理对象不可达, AcmeProximitySensor 对象持有对对等句柄的唯一可达引用。清理器可能首先被垃圾回收,不再排队或调度,但这没关系,因为它已无任务。

1.2 JNI使用提示

1.2.1 遵守规则

使用本地代码可能会破坏Java规则,例如改变 String 或其他不可变对象的内容。虽然JNI方法会尝试强制实施可见性和可变性约束,但绕过这些约束是可能的。改变规则会带来麻烦,因此要遵守Java规则。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值