Domanda

Ho un servizio IDL a caso misto che sto usando in 2 modi:

  1. Il servizio genererà un thread ed effettuerà una chiamata di rete per acquisire alcuni contenuti XML per conto di Activity. Il contenuto torna all'attività tramite l'IDL del client che definisce i metodi di callback
  2. Se l'utente sceglie l'opzione di notifica, il servizio crea un timer che viene eseguito ripetutamente e crea una notifica sulla barra degli strumenti. Ha anche memorizzato nella cache il contenuto, quindi quando Activity richiede un aggiornamento viene pubblicato dalla cache anziché da un'altra chiamata di rete

Quindi le mie domande sono

  1. Per lo scenario n. 1 qual è il prezzo (se presente) che sto pagando per l'utilizzo del servizio per le chiamate di rete invece di creare il thread in background direttamente nell'attività?
  2. Per # 2: sto meglio cambiando l'implementazione in AlarmManager? Ho notato che quando uccido i processi con TasKiller il mio servizio muore e non viene mai riavviato, il lavoro basato su AlarmManager avrebbe maggiori possibilità di recupero?
È stato utile?

Soluzione

  

Per lo scenario n. 1 qual è il prezzo (se   qualsiasi) Sto pagando per l'utilizzo del servizio per   chiamate di rete invece di creare   thread di sfondo direttamente nel file   Attività?

Suppongo che, poiché hai detto che si tratta di un "servizio IDL", che questo è ciò che chiamo un servizio remoto - stai usando AIDL per definire un'interfaccia che viene utilizzata oltre i confini del processo.

In tal caso, il costo è di diversi MB di RAM per il secondo processo, oltre a un po 'di tempo della CPU per l'overhead IPC. Quanto "bit di tempo CPU" dipende dalla frequenza con cui viene chiamato.

  

Per # 2 - sto meglio cambiando   implementazione su AlarmManager?

Generalmente sì. Idealmente, i servizi sono in memoria il meno possibile.

  

L'ho notato quando uccido i processi   con TasKiller il mio servizio muore e   mai riavviato, lo farebbe   Il lavoro basato su AlarmManager è migliore   possibilità di recupero?

No, perché " task killer " le app tendono ad abusare di un'API (nelle parole di Dianne Hackborn) che ucciderà tutto, compresi gli allarmi programmati. Al momento, non esiste un & amp; difesa efficace contro "task killer" di cui sono a conoscenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top