2013-02-22 4 views
0

У меня есть AsyncTask и я пытаюсь вызвать из него собственный (jni) метод. Является ли это возможным? Я получаю исключение во время выполнения, говорящее о неудовлетворенной ошибке ссылки.AsyncTask вызывает собственный метод

+0

да, возможно. проблема, скорее всего, связана с тем, как вы включаете jni lib – njzk2

+0

. Я включаю его так же, как в activity, system.loadlibrary ("libraryname"), но он не работает. Могу ли я сделать что-то еще, чтобы заставить его работать? – whiteShadow

ответ

1

Да, вы можете вызывать методы JNI из любого потока, включая те, которые используются для AsyncTask. Проблема, скорее всего, будет либо:

  1. Что родная библиотека не загружена вовремя. Может быть, у вас есть условие гонки здесь, вы используете несколько потоков? Вы загружаете библиотеку в основной поток, участвуя в гонках с вызовом JNI в фоновом потоке?
  2. То, что у вас есть несоответствие подписи между вашим заглушкой на основе метода на стороне Java и реализацией метода на внутренней стороне.
+0

Я загружаю библиотеку в основное действие и использую ее в asynctask в методе onResume. Если я вызываю собственную библиотеку из метода onResume, комментируя asynctask, она отлично работает. То же самое при вызове из asynctask не работает, давая мне неудовлетворенную ошибку связи с библиотекой. – whiteShadow

+0

Вы перемещаете собственный метод заглушки в AsyncTask? Это изменило бы его подпись. Честно говоря, трудно угадать, что происходит без кода. –

+0

Понял, что я не изменял имя класса в сигнатуре родной библиотеки. – whiteShadow

Смежные вопросы