Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我对从 Android 进行的 JNI 函数调用有疑问。它们是否与 Android 应用程序在同一线程上运行?如果本机功能需要更多时间运行,UI 会冻结吗?
JNI 调用是同步的,就像任何其他 Java 调用一样,您可以切换或生成线程,但如果您没有指定它,它们将在同一个线程上执行。所以如果你从 UI 线程调用一个 JNI 函数,它将被阻塞,直到函数返回。
JNI 函数与调用 JNI 函数的人在同一线程中运行。
看起来是这样的,如果你在一个服务中创建一个新的 Thread(Thread A),并在 Thread A 中调用了一个 JNI 函数,那么 JNI 就运行在 Thread A 中。