Функции Android JNI работают в основном потоке?

У меня есть сомнения в отношении вызовов функций JNI, сделанных с Android. Они работают в той же теме, что и приложение для Android? Будет ли пользовательский интерфейс зависеть, если нативная функция занимает больше времени для запуска?

Ответ 1

JNI-вызовы синхронны, как и любой другой Java-вызов, вы можете переключать или создавать потоки, но если вы его не указали, они выполняются в одном потоке. Поэтому, если вы вызываете функцию JNI из потока пользовательского интерфейса, она будет заблокирована до тех пор, пока функция не вернется.

Ответ 2

Функция JNI работает в одном потоке с тем, кто вызывает функцию JNI.

Кажется, что так, если вы создаете новый поток (Thread A) в службе и называете JNI-функцию в Thread A, JNI работает в потоке A.