2011-11-16 8 views
8

Può qualunque prego di dirmi qual è la differenza tra attività e processo in Android. Se utilizzo questo snippet di codice.differenza tra l'esecuzione di attività e processi in esecuzione in Android

ActivityManager Appmgr; 
protected List<ActivityManager.RunningTaskInfo> apps; 
protected List<ActivityManager.RunningAppProcessInfo> applications; 
applications = Appmgr.getRunningAppProcesses(); 
apps = Appmgr.getRunningTasks(30); 

Qual'è la differenza tra applications = Appmgr.getRunningAppProcesses() e apps = Appmgr.getRunningTasks(30).

Per favore aiutatemi. Saluti

risposta

7

getRunningAppProcesses():

Restituisce un elenco di record RunningAppProcessInfo, o null se non ci sono processi in esecuzione (non restituirà un elenco vuoto). Questo elenco di ordini non è specificato.

getRunningTasks (int maxNum):

restituire un elenco delle attività che sono attualmente in esecuzione, con il più recente è primo e più anziani quelli dopo in ordine. Si noti che "in esecuzione" non significa che il codice dell'attività è attualmente caricato o attività - l'attività potrebbe essere stata bloccata dal sistema, in modo che possa essere riavviata nel suo stato precedente quando viene portata in primo piano.

Aggiornamento:

Ora la differenza tra Task e processo.

In Android Un'attività è un insieme di o si può dire che un insieme di attività. Riguarda l'interazione dell'utente con queste attività. Android mantiene queste attività nello stack di conseguenza vengono aperte e gestiscono questo stack. Può essere uno stack o più stack, l'ultima attività aperta in cima allo stack. E come Android mantenere lo stato dei sistemi. Un'applicazione ha il proprio compito con le attività aperte e se viene avviata una nuova applicazione, il sistema crea una nuova attività con nuove attività nella struttura LIFO. E quando l'utente interagisce con questa attività sulla schermata principale, si limita a passare a un'applicazione particolare e l'attività di questa applicazione diventa ora in primo piano.

mentre il processo è legato alla componente dell'applicazione Android. Ogni nuova applicazione Android inizia nel nuovo processo (processo Linux) nel proprio spazio utente. Tutti i componenti dell'applicazione vengono eseguiti sullo stesso processo per impostazione predefinita. E viene eseguito come processo a thread singolo. Ecco perché è chiamato Main Thread of Application. Ma qui puoi definire un processo separato per diversi componenti delle applicazioni Android, come Attività, Servizio, Fornitore o Ricevitore Broadcast utilizzando l'attributo manifest android:process. Android Process ha lo stesso fondo di Linux Process con UserId, quindi puoi combinare diversi componenti di applicazioni Android in esecuzione sullo stesso processo con lo stesso UserId.

Così, mentre si chiama getRunningAppProcesses() Essa vi darà tutti i processi in esecuzione dell'applicazione Android relativi ai componenti applicativi in ​​esecuzione.

E getRunningTasks (int maxNum) ti dà la lista delle attività creata per le diverse applicazioni in esecuzione di sistemi, mentre all'utente di interagire con le applicazioni.

+0

Questa risposta copia semplicemente dalla pagina la domanda originale derivata. Le altre due risposte lo spiegano "in altre parole". – Bamerza

+0

@Bamerza - In realtà la risposta precedente era relativa alle domande prima dell'aggiornamento. Grazie per i commenti ho aggiornato la risposta come nuovo soggetto e informazioni sulla domanda. – user370305

8

Il precedente "risposta" è la sostituzione di un soggetto sconosciuto da un altro. La domanda riguarda la definizione del sistema, non su come ricevere informazioni correlate e differenze tra metodi e classi.

In realtà nell'attività Android = applicazione ed è un insieme di attività.

Il processo è una divisione per separazione della memoria ed è un insieme di thread in esecuzione è una memoria separata.

L'applicazione predefinita è un processo. Lo sviluppatore è in grado di definire un'altra separazione per processi mediante l'uso dell'attributo "android: process" nelle "attività", "servizio", "ricevitore" e altre definizioni di unità eseguibili all'interno del tempo manifest.

Vedi http://developer.android.com/guide/components/processes-and-threads.html

3

Android ha kernel Linux. Quindi il processo è simile ai processi in Linux. Ogni processo può avere più thread. All'avvio di un processo, l'esecuzione è a thread singolo per impostazione predefinita. Questo thread è chiamato thread principale o thread dell'interfaccia utente. Potresti avere altri worker o thread asincroni in esecuzione in un processo.

L'attività o l'applicazione possono essere visualizzate come set di attività in un'applicazione. È possibile che ogni attività nell'attività sia configurata per l'esecuzione in processi diversi. Lo stesso vale per le altre autorizzazioni di Android: servizi, provider, ecc. Componenti di diverse attività/applicazioni possono essere eseguiti nello stesso processo (a condizione che le applicazioni condividano lo stesso ID utente di Linux e siano firmati con gli stessi certificati).

Quando la memoria di sistema è in esaurimento dell'applicazione in esecuzione, un processo precedente viene interrotto. Ancora una volta si noti che questo potrebbe avere componenti di diverse applicazioni.

activityManager.getRunningTasks(Integer.MAX_VALUE) 

Sopra vi darà esecuzione compiti o meglio consente di chiamare applicazione costituito da serie di attività. (Elenco degli oggetti RunningTaskInfo). Questo a sua volta avrà due cose principali.

  1. baseActivity: componente lanciato come la prima attività nel compito
  2. topActivity: componente di attività in cima alla pila storia del compito

e

activityManager.getRunningAppProcesses() 

di cui sopra saranno dare tutti i processi in esecuzione nel sistema. Dato che è un processo, avrà associato pid (processId) e `uid (userId). Alcuni dei campi importanti sono -

  1. processName: il nome del processo che questo oggetto è associato con
  2. pid: Il PID di questo processo; 0 se nessuno
  3. uid: l'ID utente di questo processo.
  4. pkgList: tutti i pacchetti che sono stati caricati nel processo.
Problemi correlati