1、
1、创建子线程
pthread_t pthread_create【第三个参数是线程执行的方法】
pthread_exit【在create第三个参数那里调用】
2、生产者【解码】,消费者【播放出来】
1) 线程锁就是在多线程中在某一时刻只能有一个线程能对它操作
2) 操纵对象前上锁,完事,发送条件,解锁
另一个循环:上锁--完事 || 等待的时候,阻塞,而且解锁了,参数【条件,锁】---解锁
3) cond mutex都需要 声明,init,destroy.
cond是signal,wait
mutex是lock,unlock
3、
《1》 C++ 主线程call Java method
All about env
1) 通过jobject获取jclass
jclass clz=env->GetObjectClass(jobj);
2) 获取jmethodid, method 的 id
jemthodid jmid=env->GetMethodID(clz, "onError", "(ILjava/lang/String;)V")
3) 调用方法
jenv->CallVoidMethod(jobj, jmid, code, jmsg)
《2》C++子线程call Java method
通过JVM获取Env
1) Get JVM 对象: JNI_OnLoad(JavaVM* vm, void* reserved)
2) 通过JVM获取JniEnv:
JNIEnv *env;
jvm->AttachCurrentThread(&env, 0);
//call Java Method
jvm->DetachCurrentThread();
4、Code Structure
native-lib和Demo.java联系,然后MainActivity.java里调demo对象
xml跟MainActivity.java连接
xml【button callback】--- MainAcitivity.java方法里调用Demo.java里面的方法
Demo.java【里面的方法实现都在native-lib里】 Load "native-lib"的Library---Java里面调用c++
5、Questions
MainActivity.java---OnErrorListener干啥用的?
它监听OnError方法,没有它怎么传过来code和msg