Как мне поговорить с действием из локальной службы в Android?

Я новичок в разработке для Android, и меня не устраивает связь между сервисом и активностью. Мне нужно прослушать сокет и, когда пакет получен, обновить что-то в Activity. Я планирую прослушивать сокет с помощью службы и хочу сообщить об активности, когда что-то было получено.

Пока я просто хочу, чтобы моя служба отправляла сообщение в мою активность каждые 5 секунд. Когда действие получает сообщение, оно печатает его в TextView.

Я просмотрел (привязанные службы), но, похоже, это только в одну сторону: методы вызова Activity в службе. Нужны ли мне трансляции? Разве они не предназначены для связи между процессами?

Может кто-то указать мне верное направление? Спасибо.


person tompreston    schedule 18.04.2013    source источник
comment
Попробуйте использовать Handlers, чтобы отправить сообщение обратно в вашу активность.   -  person Divya Motiwala    schedule 18.04.2013
comment
Это сработало: это самый простой способ отправить сообщение из локальной службы в активность "> stackoverflow.com/questions/3998650/   -  person tompreston    schedule 18.04.2013
comment
Рад, что вы нашли свой ответ. Широковещательные передачи являются правильным подходом, но вам следует рассмотреть возможность использования LocalBroadcastManager для поддержания связи в вашем приложении: LocalBroadcastManager.getInstance(context).sendBroadcast(intent);   -  person JustinMorris    schedule 20.04.2013


Ответы (1)


Используйте обратный вызов.

ServiceInterface.aidl:

package com.test.service;
import com.test.service.ServiceCallback;
interface ServiceInterface {

    /**
     * Register callback for information from service.
     */
    void registerCallback(ServiceCallback cb);

    /**
     * Remove a previously registered callback interface.
     */
    void unregisterCallback(ServiceCallback cb);
}

ServiceCallback.aidl

package com.test.service;

/**
 * Callback interface used by IRemoteService to send
 * synchronous notifications back to its clients.  Note that this is a
 * one-way interface so the server does not block waiting for the client.
 */
oneway interface ServiceCallback {
    /**
     * Your callback function
     */
    void onCallback(int data);
}

Найдена ссылка на сайт Malachi для Android с пояснениями больше кода.

person mach    schedule 18.04.2013