Intereting Posts
Если кто-то использует библиотеку iText в приложении Android для PDF без лицензии на покупку, как iText знает, что он это сделал? Как установить демо-приложение android api в мой телефон Замена или обращение с кнопкой «Перейти» в WebView Метод onDestroy () Activity не вызывается после удаления активности из фона с помощью swiping Добавление заголовка в GridView (Android) Как реализовать журнал изменений в android? Android – Как получить информацию о сыром сенсорном экране? RecyclerView onBindViewHolder вызывается только один раз внутри макета вкладки Дорожная карта для функций HTML5 в WebKit для Android Объявление Android Admob в PreferenceActivity Отсутствует разрешение Bluetooth, но мое приложение не использует его Видимость ImageView Ошибка с таймером Как сделать TextView похожим на PreferenceCategory Header Как обновить счетчик динамически? Андроидальная анимация Android: пребывание в последнем кадре анимации при завершении анимации

Как отправить данные из IntentService в класс Non-Activity

У меня есть два класса обслуживания. Один из них – WebsocketService(extends Service) для управления Websocket related function и SocketMessageProcessing(extends IntentService) для process response Received in WebSocketService . Из класса Non-Activity(SocketImpl) я успешно могу отправить данные в WebsocketService . Но мне трудно отправить ответ обратно в класс SocketMessageProcessing из класса SocketMessageProcessing .

 //Common Class To send data to WebsocketService and Receive response from SocketMessageProcessing Service When Work Done. I am using this class as callback. public class SocketImpl{ private String json; private Context mContext; private WebServiceResponseListener mListener; public SocketImpl(Context context, String json, WebServiceResponseListener mListener){ //Initilize variables } public void execute() { //Send request to websocket WebSocketService.sendMessage(mAdapter.getContxet(), json); } public void onResponse(String resp, String tag) { //Here I would like to receive response from IntenService Class. } } 

 //This class will perform Websocket related function and it will send response to SocketMessageProcessing once response received. public class WebSocketService extends Service { ... private void processResponse(String message){ Intent intent = new Intent(mContext, SocketMessageProcessing.class); intent.putExtra("DATA", message); mContext.startService(intent); } } //Intent service to Process the incoming websocket response, And Send response Back to Class Where Its originate(SocketImpl). public class SocketMessageProcessing extends IntentService{ @Override protected void onHandleIntent(Intent intent) { String json = intent.getStringExtra("DATA"); //Process json and send data back to class from where request originate? } } 

Ниже вещей, которые я пробовал до сих пор.

  1. LocalBroadcastManager
    Поскольку я хочу получать ответ в классе Non-Activity, я не знаю, как управлять register и unregister BroadcastReceiver .

  2. Cache SocketImpl Object и получить этот объект в SocketMessageProcessing и попытался вызвать onResponse() . Но я получил исключение "sending message to a handler on a dead thread" , поэтому подумайте, что это не очень хорошая идея. Потому что метод onResponse выполняет множество операций, связанных с пользовательским интерфейсом.

Любая помощь приветствуется. Заранее спасибо!

Вариант №1, который вы предложили, является стандартным способом. И вам просто нужен объект контекста для регистрации и отмены регистрации

 LocalBroadcastManager.getInstance(context).registerReceiver(... 

Я просто попробовал это в своем приложении из класса non-Activity (используя контекст активности, который ему нужен в любом случае), и он отлично работает. Я не уверен, что вы подразумеваете под

Я не знаю, как управлять реестром и отменить регистрацию BroadcastReceiver