2012-05-08 2 views
10

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

ответ

13

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

+0

Спасибо за разъяснение – Shamy

+1

В каком потоке выполняется JNI_OnLoad? – fnc12

1

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

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