Служба Активности в Android - PullRequest
0 голосов
/ 08 июля 2011

Как я могу отправить данные из Сервиса в Активность? Приемник вещания? Обработчики? Намерение? У меня есть несколько Strings, в частности, которые я хотел бы отправить из Сервиса в Активность, чтобы затем я мог отобразить пользователю некоторое представление.

getApplication().startActivity(new Intent())?

Ответы [ 3 ]

0 голосов
/ 08 июля 2011

Как упомянул @ Джастин-щит, лучший способ - это использовать какую-то форму IPC.Однако я не думаю, что вам нужно использовать AIDL.Вы можете увидеть еще один ответ . Я задал аналогичный вопрос, в котором описаны основные шаги по регистрации обработчиков и посланников в вашем Activity и вашем Service.

0 голосов
/ 09 июля 2011

Я думаю, что все ваши ответы намного сложнее, чем мне нужно. Я думаю, что нашел довольно простое решение (псевдо-код):

Услуги:

Intent i = new Intent(this,Activity.class);

i.putExtra(name,value);

startActivity(i);

Activty:

private Intent intent;

private String s1;

от

onCreate(Bundle savedInstanceState)
{
    super(savedInstanceState);</p>

<code>intent = this.getIntent(); //Gets the intent that started this Activity.    

s1=intent.getExtras().getString(name);      
</code>

}

Буду ли я использовать тот же код в onStart ()? Как насчет onResume ()? onRestart ()? Наконец, я хочу отправить в Activity только некоторые данные для публикации через некоторые объекты View, мне не нужно возвращаться к Сервису.

0 голосов
/ 08 июля 2011

Поскольку активность и обслуживание находятся в одном приложении.Вместо использования Service Binder IPC, попробуйте реализовать механизм регистрации callBack.Попробуйте выполнить следующий шаг.-> Создайте статический класс, который расширяется от класса Application для быстрой ссылки в любом месте вашего приложения.-> Зарегистрируйте обратный вызов из Activity в этот класс приложения.-> Отправьте событие из вашего сервиса в класс приложения и позвольте классу приложения доставить событие всем зарегистрированным вызовам.

...