Android: utilizzo del servizio in background
-
06-07-2019 - |
Domanda
Ho un servizio IDL a caso misto che sto usando in 2 modi:
- 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
- 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
- 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à?
- 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?
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.