1.MediaScanner.java加载jni库
MediaScanner jni实例
2.native_init函数获取java层mNativeContext成员FieldID
MediaScanner jni实例
3.native_setup函数保存c层MediaScanner对象指针到java层,便以后使用
MediaScanner jni实例
3.c层processDirectory负责目录扫描工作
MediaScanner jni实例
MediaScanner jni实例
4.总结
java层习惯在init时,在native层new一个c对象,并将其对象指针保存在自己的整型成员中,当调用其他native函数时可以从java层获取该指针,简言之:native层对象由java层管理。
附:当JNIEnv不作为参数传入时,JNI提供了如下两个函数获得,
AttachCurrentThread和GetEnv.
在Android系统中,当在一个线程中调用AttachCurrentThread后,如果不需要用时一定要做DetachCurrentThread处理,否则线程无法正常退出。











网友评论