2013-03-13 2 views
0

Вы можете вещь этот вопрос является дубликатом один, но до сих пор я не нашел ответа на другие должностиОтправить данные из Android класса Thread Сервисную класса

У меня есть класс обслуживания под названием «Update» и индивидуальный класс резьбы по имени, как «SyncData» внутри службы. Мне нужно запустить поток SyncData в методе onCreate() класса обслуживания. Когда поток запускается, он запускается только один раз, и он должен вернуть значение строки в метод Service onCreate(). Но в моем случае он всегда обращается в нуль в методе Service onCreate(). Но я вижу эту же строку данных в моем классе Thread, помещая журналы.

Во многих разных сообщениях я вижу передачу данных из потока в активность или передачу данных между Threads обработчиками. Я не вижу сообщений о передаче данных из потока в класс службы.

Может кто-нибудь помочь мне в этом.

Спасибо!

ответ

0

Вы не можете. Потому что, если вы создаете новый поток, метод onCreate возвращает не дожидаясь окончания потока. С другой стороны, вы не можете заблокировать его, иначе вы заблокируете нить ui и получите ошибку ANR.

+0

Я понимаю, но как я могу выполнить эту задачу? – user1810931

+1

вы не можете. Единственное, что вы можете сделать, это обратный вызов, вызываемый где-то, когда поток выполняется. Но вы не можете блокировать onCreate() – fedepaol

+0

о том, что касается onStartCommand() или любого другого места в классе обслуживания? – user1810931

0
Make the String value static and define it in service class. 
Eg: 

public class abcd extends service 
{ 
public static String string; 
.... 
....... 
... oncreate() 
{ 
Thread t=new Thread(new Otherclass()); 
t.start(); 
} 
} 

Try this . Also be sure to stopservice only after executing thread. 
+0

в порядке, позвольте мне ответить – user1810931

+0

@ user1810931 как у вас вернулся значение из потока .... public void run() {} строки возврата can not –

+0

Я получаю значение String как null – user1810931

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