我对在Android中调用JNI函数有疑问。它们是否在与Android应用相同的线程上运行?如果本地函数需要更长时间运行,UI会冻结吗?
JNI调用是同步的,就像任何其他Java调用一样,您可以切换或生成线程,但如果您没有指定,则它们将在同一线程上执行。因此,如果您从UI线程调用JNI函数,它将被阻塞,直到函数返回。
JNI函数在与调用JNI函数的线程相同的线程中运行。
如果您在服务中创建一个新线程(线程A),并在线程A中调用JNI函数,则JNI将在线程A中运行。