2010-09-29 9 views
10

C'è qualche differenza tra ciò che accade quando si utilizza un'applicazione Task Killer per uccidere un'app contro ciò che accade quando il sistema operativo Android uccide un'app a causa della scarsa risorse?Differenza tra un Task Killer Uccisione di un'app e il sistema operativo Android Uccisione di un'app

L'SDK di Android indica che il metodo Application.onTerminate() non viene chiamato quando il sistema operativo uccide un'app a causa di risorse scarse. Quindi sembra che il sistema operativo non chiuda in modo pulito le app e che faccia esattamente quello che fanno i molti assassini di compiti.

Se fanno la stessa cosa, allora i killers non fanno più danni del sistema operativo stesso, giusto?

+2

Sembra che tu abbia un http://en.wikipedia.org/wiki/Killer_app a portata di mano. – ChessWhiz

risposta

0

AFAIK per esperienza, quando Android uccide un'applicazione non si può contare sul fatto che venga ucciso in modo pulito (nessuna chiamata per distruggere i metodi). Per quanto riguarda un assassino di compiti ... beh, immagino che dipenda da come viene implementato uno specifico killer di compiti.

Android fa un ottimo lavoro gestendo le risorse da solo, ma un task killer può rivelarsi utile quando si desidera esplicitamente uccidere qualcosa. E per rispondere alla tua domanda, non penso che un assassino sia più dannoso di quando Android uccide un'applicazione.

3

C'è qualche differenza tra ciò che accade quando si utilizza un'applicazione Task Killer per uccidere un'app contro ciò che accade quando il sistema operativo Android uccide un'app a causa di risorse scarse?

Un task killer attacca l'app dall'orbita. Termina il processo, rimuove tutti gli allarmi, rimuove tutti gli PendingIntents registrati (ad es. Per gli aggiornamenti di posizione), ecc.

In occasione saltuaria in cui Android deve terminare un processo per liberare RAM, termina semplicemente il processo.

Se fanno la stessa cosa, i killers non fanno più danni rispetto al sistema operativo stesso, giusto?

No, i task killer fanno un bel po 'più danno all'app.

6

A partire da Froyo non c'è differenza. :) Tutto ciò che un task killer può fare è kill -9 un processo quando è in background, che è la stessa cosa che fa il sistema operativo quando vuole la sua memoria. E sì, questa non è un'uscita pulita e ordinata, è un kill-the-process-dead-right-now. Infatti, su normali ambienti Android, Application.onTerminate() non verrà mai ucciso; i processi vanno via solo uccidendo.

Prima che i killers del task Froyo avessero accesso a un'API diversa - "force stop" - che permetteva loro di interrompere molto più brutalmente tutte le app. Ciò include l'interruzione di tutti i servizi avviati, la rimozione di eventuali allarmi registrati, la rimozione di notifiche, ecc.

Problemi correlati