/ / Komunikacja między usługą Android a aktywnością za pomocą odbiornika - Android, usługa, aktywność Android, komunikacja

Komunikacja między usługą Android a działaniem przy użyciu słuchacza - androida, usługi, android-działania, komunikacji

Większość przykładów, które widzę w komunikacji międzyaktywność i usługa korzystają z BroadcastReceiver. Moje pytanie brzmi: czy mogę zamienić odbiornik na zwykłego słuchacza? Potem nie muszę się martwić o przekierowanie odpowiedzi mojej usługi sieciowej na klasę Intent / Bundle. Czy jest coś złego w tym podejściu? Coś mniej korzystnego niż przy użyciu BroadcastReceiver? AddListener zostałby wywołany metodą onCreate działania i RemoveListener zostanie wywołany w metodzie onDestroy działania.

package com.example.test;

import java.util.ArrayList;
import java.util.List;

import android.app.IntentService;
import android.content.Intent;

public class AsyncService extends IntentService
{
static List<WebServiceListener> listeners = new ArrayList<WebServiceListener>();

public static void addListener(WebServiceListener listener)
{
listeners.add(listener);
}

public static void removeListener(WebServiceListener listener)
{
listeners.remove(listener);
}

public AsyncService(String name)
{
super(name);
}

@Override
protected void onHandleIntent(Intent intent)
{
try
{
Thread.sleep(5000); //simulate calling webservice
}
catch (Exception e)
{
//
}

WebServiceResponse response = new WebServiceResponse();
response.status = "SUCCESS";

for (WebServiceListener listener : listeners)
{
listener.onReceiveResult(response);
}
}
}

Odpowiedzi:

4 dla odpowiedzi № 1

jeśli jest to usługa lokalna, tak, możesz to zrobić