#include <string.h>
#include <jni.h>
#include <pthread.h>
jmethodID t_mid;
jobject t_obj;
JavaVM* t_javaVM;
jint loopCheck =
10
;
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm,
void
* reserved)
{
t_javaVM = vm;
return
JNI_VERSION_1_6;
}
void
JNI_OnUnload(JavaVM *vm,
void
*reserved)
{
t_javaVM = NULL;
}
void
* receive_thr() {
JNIEnv* env =
0
;
(*t_javaVM)->AttachCurrentThread(t_javaVM, &env,
0
);
(*env)->CallVoidMethod(env, t_obj, t_mid, (*env)->NewStringUTF(env,
"removeServiceCallback Callback first"
));
while
(loopCheck)
{
(*env)->CallVoidMethod(env, t_obj, t_mid, (*env)->NewStringUTF(env,
"removeServiceCallback Callback second"
));
loopCheck = loopCheck -
1
;
sleep();
}
}
Java_com_example_processkill_MainActivity_receiveNativeSetting( JNIEnv* env,
jobject obj )
{
jclass cls = (*env)->GetObjectClass(env, obj);
t_mid = (*env)->GetMethodID(env, cls,
"removeServiceCallback"
,
"(Ljava/lang/String;)V"
);
if
(t_mid == NULL) {
return
;
}
}
JNIEXPORT jint JNICALL
Java_com_example_processkill_MainActivity_receiveNativeStart(JNIEnv* env,
jobject obj )
{
jint status;
jint a =
1
;
t_obj = obj;
pthread_t receive_thread;
(*env)->CallVoidMethod(env, obj, t_mid, (*env)->NewStringUTF(env,
"removeServiceCallback receiveNativeStart 1"
));
pthread_create(&receive_thread, NULL, receive_thr, (
void
*)&a);
pthread_join(&receive_thread, (
void
**)&status);
(*env)->CallVoidMethod(env, obj, t_mid, (*env)->NewStringUTF(env,
"removeServiceCallback receiveNativeStart 2"
));
}
Java_com_example_processkill_MainActivity_receiveNativeStop(JNIEnv* env,
jobject obj )
{
(*env)->CallVoidMethod(env, t_obj, t_mid, (*env)->NewStringUTF(env,
"removeServiceCallback receiveNativeStop"
));
pthread_exit(
0
);
}