您的位置:首页 > 移动开发 > Android开发

android通过线程回调java方法

2012-05-28 12:47 369 查看
最近做android项目中调用大量的底层代码(c++编写),刚开始利用JNI回调,程序正常运行,可这几天程序出现问题了,当在c/c++的线程中执行回调函数时,会导致回调失败(有时候回调方法中只执行了一句)。后来终于找到了解决方法:

利用特定线程来回调:
如:
在c++中定义回调函数指针:

typedef void (*ReceiveCallback)();

typedef struct {

ReceiveCallback recv_cb;

} Callback;

c++函数中加入
void *thread_entry(void *args) {

Callback* cb = (Callback *) args;

while (1) {

LOG(LS_INFO) << "thread running...\n";

if (cb != NULL && cb->recv_cb != NULL) {

cb->recv_cb();

}

sleep(1);

}

}

void init(Callback *cb) {

pthread_t thread;

pthread_create(&thread, NULL, thread_entry, (void *) cb);

}

调用处:
static Callback mCallbacks = { receive_callback };

void init_Create_thread(){

init(&mCallbacks);

}

void receive_callback() {

LOG(LS_INFO) << "receive_callback";

callBack_JNI();//这个是JNI回调java的方法(在JNI中编写)

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: