2014-01-22 2 views
1

У меня есть служба, которая запускается при загрузке и должна запускаться во время работы устройства.Рабочий поток службы поддержки Android запускает активность и ждет ответа

Эта служба имеет рабочий поток, который запускает действие (QueryActivity), когда происходит определенное событие. Эта деятельность начала корыто намерения:

private void launchActivity(String msg){ 
     Intent intent = new Intent(getBaseContext(), QueryActivity.class); 
     intent.putExtra("query", msg); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     getApplication().startActivity(intent); 
    } 

Активности будет отображаться видом текста на основе строки сообща переданной в качестве дополнительных. Активность также отображает две кнопки. Скажем, кнопки YES и NO. Пользователь читает текст и нажимает либо «ДА», либо «НЕТ».

Я хочу отправить выбор пользователя (да или нет) обратно в службу сразу после метода launchActivity внутри рабочего потока.

(...) 
launchActivity(str); 
String YesOrNo = receiveUserChoice(); 
(...) 

Как это сделать?

Спасибо.

+0

вы не ждете ответа. вы получаете его в onActivityResult. – njzk2

+0

Но я не могу запустить startActivityForResult из службы. – rmgoncalo

+1

, тогда вы не можете дождаться ответа. ваша деятельность может привязываться к службе и отправлять ее данные, с другой стороны – njzk2

ответ

0

Вы не можете запустить Activity из своего Сервиса и получить немедленный ответ. Ответ должен вернуться асинхронно. Есть несколько способов сделать это:

  1. Ваша активность может позвонить startService() с ответом как дополнительный в Intent. Это приведет к выходу onStartCommand() в Сервис.

  2. Деятельность в этом секторе может быть направлена ​​локальной сетью Intent, содержащей ответ. В этом случае службе необходимо настроить BroadcastReceiver для прослушивания ответа.

  3. Деятельность может связываться с Сервисом и передавать данные назад, как предложено @ njzk2 (это немного сложнее).

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