0

我正在尝试构建一个 Android 应用程序,该应用程序使用现有的 C 库进行一些后台操作(即进行一些无线电扫描、调到电台等)。作为一个独立的 C 可执行文件,主循环可以处理来自较低级别(硬件组件)的消息处理。我的理解是使用JNI,不需要main函数,因为

1)创建一个共享库并

2)只要加载它的java线程还活着,共享库就“活着”。

所以假设 C 库使用多个线程:那么通常在初始主循环中完成的消息处理应该在哪里完成?是否像调用与 JNI 函数一起声明的 C 函数一样简单?

4

1 回答 1

0

Re 2) library 在内存中持久化的意思是“活着的”。但它自己不做任何事情。如果即使没有通过 JNI 调用任何函数,您也需要该库“做某事”,那么您当然需要一个单独的本机线程。您可以在常规 JNI 函数调用(init 方法或JNI_OnLoad用于该目的)中创建线程并启动消息循环。当 JNI 函数调用返回时,它将继续运行。然后,您还需要一个拆卸方法来停止线程并将其拆卸(JNI_OnUnload可用于此)

于 2012-07-29T16:20:43.310 回答