2013-05-30 1 views
-1

Я новичок в Android, но опыт в программировании Java. У меня есть библиотека с открытым исходным кодом, которую я хочу включить в простую программу Android One-Click-Test. Моя проблема заключается в том, что конструктор начинает поток в стандартном стандарте Java new Thread(new Runnable ...).start и т. Д. , но это вызывает CalledFromWrongThreadException в Android (MainActivity).CalledFromWrongThreadException - Но поток был запущен стандартным образом внутри jar/lib

Есть ли способ вставить его в RightThread?

+1

plz показать соответствующую часть кода, чтобы получить от нас больше помощи –

+0

Тема создана внутри банку, которую я не могу изменить. Я просто создаю экземпляр с помощью 'HiddenClass myInstance = new HiddenClass (некоторые, args)' В стандартной Java он немедленно возвращается, но продолжает выполнять некоторую обширную работу в фоновом режиме. – Carsten

+1

Фоновая нить, возможно, в какой-то момент вернется к вашему приложению, верно? Основываясь на исключении, похоже, что вы пытаетесь манипулировать чем-то в этом обратном вызове (или еще дальше по цепочке вызовов), которые действительно должны врываться в поток основного/пользовательского интерфейса. Используйте ответ @ MaciejGórski, чтобы заставить эту логику работать в потоке пользовательского интерфейса. –

ответ

0

CalledFromWrongThreadException Usunally выбрасывается при попытке изменить пользовательский интерфейс из другого потока. Если это то, что происходит в вашей библиотеке с закрытым исходным кодом, тогда вы можете просто слить его. Если это в вашем коде, у вас есть много вариантов: Activity.runOnUiThread или с помощью Handler для безопасной связи потоков.

+0

Я уже пробовал runOnUiThread, но безрезультатно. Тот же вопрос. И нет, библиотека ничего не знает об Android или его интерфейсе. – Carsten

+1

@ Карстен Без лишнего кода нельзя сказать. –

+0

Еще раз, 'SomeClass myInstance = new SomeClass (some, args)' сбой, если SomeClass-Constructor запускает собственный Thread в стандартном Java стандарте. Это внутренняя проблема. – Carsten

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