我对从Android制作的JNI函数调用有疑问。它们是否与Android应用程序在同一个线程上运行?如果本机函数花费更多时间运行,UI会冻结吗?
答案 0 :(得分:15)
JNI调用是同步的,与任何其他Java调用一样,您可以切换或生成线程,但如果您没有指定它,则它们在同一个线程上执行。因此,如果从UI线程调用JNI函数,它将被阻塞,直到函数返回。
答案 1 :(得分:1)
JNI函数在与调用JNI函数的线程相同的线程中运行。
看起来像这样,如果你在服务中创建一个新的线程(线程A),并在线程A中调用一个JNI函数,那么在线程A中运行的JNI。