#software-development


Java 中的静态代理和动态代理

代理模式的使用场景如下:

当无法或不想直接访问某个对象或访问对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。

[阅读全文]
Java 

Android JNI 中的引用管理

在 Native 代码中有时候会接收 Java 传入的引用类型参数,有时候也会通过 NewObject 方法来创建一个 Java 的引用类型变量。

在编写 Native 代码时,要注意这个代表 Java 数据结构类型的引用在使用时会被 GC 回收的可能性。

[阅读全文]
NDK 

Android JNI 调用时缓存字段和方法 ID

在 JNI 去调用 Java 的方法和访问字段时,最先要做的操作就是获得对应的类以及对应的方法 id。

事实上,通过 FindClass 、GetFieldID、GetMethodID 去找到对应的信息是很耗时的,如果方法被频繁调用,那么肯定不能每次都去查找对应的信息,有必要将它们缓存起来,在下一次调用时,直接使用缓存内容就好了。

缓存有两种方式,分别是使用时缓存和初始化时缓存。

[阅读全文]
NDK