Autore Topic: Notificare al main UI un operazione nel onStartCommand  (Letto 463 volte)

Offline dacplus

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Dsisre HD
Notificare al main UI un operazione nel onStartCommand
« il: 08 Maggio 2015, 12:25:46 CEST »
0
Buongiorno,
sto implementando un piccolo client rest che opera in un service e notifica la risposta all' activity principale.

Le chiamate vengono lanciate nel metodo onStartCommand del service, ma non riesco far ritornare le risposte all'activity tramite AIDL (vorrei evitare il broatcastReciver per ragioni di performance). Di seguito la mia implementazione

Service.java
Codice (Java): [Seleziona]
@Override
    public int onStartCommand(final Intent intent, int flags, int startId) {
        String action = intent.getAction();
        if (action != null) {
            try {
                switch (action) {
                    case ACTION_GET:
                        int operationId = intent.getIntExtra(EXTRA_OPERATIONID, -1);
                        String endpoint = intent.getStringExtra(EXTRA_ENDPOINT);
                        Map params = (HashMap) intent.getSerializableExtra(EXTRA_PARAMS);

                        . . .
                        String result = //--> chiamata asincrona al server
                        . . .

                        iListenerImpl.onSuccess(result);
                        break;

                    case ACTION_POST:
                        . . .
                        break;

                    case ACTION_PUT:
                        . . .
                        break;

                    case ACTION_DELETE:
                        . . .
                        break;

                    default:
                        Log.e(Constants.LOG_TAG, String.format("action=\"%s\" not recognized", action));
                }
            } catch (RemoteException e) {
                Log.e(Constants.LOG_TAG, e.getMessage(), e);
            }

        }
        return Service.START_STICKY;
    }

IListener.aidl
Codice (Java): [Seleziona]
interface IListener {
        void onSuccess(string result);
}

Quale pensate possa essere il best practice?

Grazie
Davide

iClaude

  • Visitatore
Re:Notificare al main UI un operazione nel onStartCommand
« Risposta #1 il: 22 Maggio 2015, 16:55:44 CEST »
0
Dal codice che hai postato non si capisce molto.
Diciamo solo che il proxy iListenerImpl deve essere creato all'interno della Activity come IListener.Stub e passato in qualche modo al Service in modo che questo possa utilizzarlo per invocare tramite esso i metodi della Activity.