Domanda:
Chiusura delle applicazioni
Robert Koritnik
2012-09-07 04:13:51 UTC
view on stackexchange narkive permalink

Immagino che questo abbia a che fare con la nostra abitudine sui computer desktop in cui

  1. apriamo un'applicazione
  2. la usiamo
  3. chiudiamo l'applicazione

AFAIK non esiste un modo diretto per chiuderla dall'interno dell'applicazione. E premendo il pulsante Home l'app entra in background. Ancora in esecuzione.

Ho l'abitudine di premere Home, quindi App recenti e sfogliare tutte le app aperte.

È una cattiva abitudine? Devo lasciare in esecuzione applicazioni come GMail, FB, Currents, GNow, ecc. O è meglio chiuderle e avere il minor numero di app in esecuzione?

AFAIK, lanciare le app dalla visualizzazione App recenti non le chiude ma le rimuove semplicemente dalla ** tua ** visualizzazione in modo che non faccia altro che ripulire il disordine delle app recenti. Potrebbe tornare utile se hai molte app aperte.
Per una prospettiva leggermente più vecchia su questo, inclusa la differenza tra la pressione dei pulsanti Home e Indietro per uscire da un'app, vedi [Qual è il modo giusto per chiudere le app in Android?] (Http://android.stackexchange.com/questions/ 927 / qual-è-il-modo-giusto-per-chiudere-app-in-Android)
Vedi anche: [Come posso interrompere l'esecuzione di applicazioni e servizi?] (Http://android.stackexchange.com/q/30332/1465)
Solo per correggere il commento fatto da @Propeller (almeno per le versioni recenti di Android), dai un'occhiata a [Cosa succede effettivamente quando scorri un'app dall'elenco delle app recenti?] (Http://android.stackexchange.com/q / 19987/16575)
Quattro risposte:
Flow
2012-09-07 13:08:40 UTC
view on stackexchange narkive permalink

La risposta è semplice: non chiudere le app quando possibile!

Android si prende cura della gestione delle app lasciandole attaccate (cosa non necessaria in memoria) quando possibile consentendo tempi di avvio più rapidi e ripresa da dove hai lasciato. Anche lo scorrimento di un'app dall'elenco delle app recenti è simile per chiuderla, ma non è la stessa.

FabianCook
2012-09-07 07:48:52 UTC
view on stackexchange narkive permalink

Dal punto di vista degli sviluppatori (il mio punto di vista):

Le applicazioni su Android funzionano in modo specifico, hanno tutte un proprio ciclo di vita, le principali di cui parliamo qui sono quando l'applicazione viene messa in pausa o arrestata (onPause, onStop) e quando l'applicazione viene distrutta (onDestroy), questi due stati vengono portati alla luce in modi diversi, onPause è quando l'utente non può più vedere l'applicazione, o lo schermo, questo è il momento l'utente preme home o fa clic su qualcosa sullo schermo che lo porta a un'altra schermata, ad esempio premendo un collegamento, c'è ancora la possibilità che tu abbia bisogno di questa schermata, ad esempio quando premi il pulsante indietro per tornare allo schermo, lo vuoi ancora nello stesso stato, quindi l'applicazione è ancora aperta e in attesa che torni.

L'altro stato, quando l'applicazione viene distrutta, può avvenire in tre modi, in primo luogo lo sviluppatore potrebbe aggiungere qualcosa per chiudere automaticamente l'applicazione, ad esempio l'applicazione Endomondo puoi premere menu> esci, questo sarà "chiudi" l'applicazione e non sarà più in memoria. Il prossimo modo è l'utente che preme di nuovo su di esso, poiché non c'è modo di tornare alla schermata esatta (ad esempio non puoi premere avanti per accedervi) quindi l'applicazione non è più necessaria e quindi viene chiusa.

Il terzo modo in cui un'applicazione viene distrutta o chiusa è quando Android ha bisogno di più memoria, quando ciò accade cancella le applicazioni che non hanno interagito più a lungo. Android lo fa da solo, se ha bisogno di più memoria lo otterrà.

Quindi in tutte le applicazioni lasciare aperte non è un problema, tuttavia alcune applicazioni possono ancora utilizzare molta potenza della CPU e non memoria quando è in background, se pensi che questo accadrà dovresti chiudilo tu stesso, Android dovrebbe essere in grado di capirlo

Dai un'occhiata qui agli stati di un'attività o di una schermata:

Activity life cycle


EDIT:

  • Premendo indietro su una schermata: attività distrutta ( onPause > onStop >onDestroy )
  • Scorrimento dell'applicazione sulle app recenti: Activitydestroyed ( onPause > onStop > onDestroy )
  • Premendo home: Applicationkept in memory, solo se lo sviluppatore non ha aggiunto una funzione di chiusura automatica ( onPause > onStop )
  • Navigazione lontano da app, link ecc: Applicazione mantenuta in memoria, come sopra ( onPause > onStop )
Anch'io sono uno sviluppatore, quindi queste informazioni vengono consumate molto facilmente dal mio cervello ... :) Quindi, dove nel diagramma di flusso si trova l'evento quando premo * App recenti * e scorro su un'app (lo capisco come effettivamente chiudendo l'app)? Tra ** onPause ** e ** onStop ** o tra ** onStop ** e ** onDestroy **? Se è il secondo, spiega la transizione di stato tra il primo. Ma se è il primo, allora posso vedere la transizione a ** onDestroy ** simile alla garbage collection? Evento non deterministico?
controlla la modifica, pensa che sia quello che vuoi.
Kinnda ... Ma penso che tu stia strizzando il numero 1 e il numero 4. Premendo indietro l'app viene * arrestata * e non * distrutta *. È ancora nelle app recenti. Così come premere home. e con # 4: la navigazione via (cioè il collegamento) porta l'app nello stato * in pausa * come da diagramma di flusso.
BTW: Durante il test con l'app GMail ho effettivamente trovato un bug al suo interno quando riprende dallo stato * fermato *. :)
L'attività teoricamente dovrebbe finire su 1 e io avevo ragione su 4, `onPause> onStop` è corretto
Dielson Sales
2012-09-07 07:49:44 UTC
view on stackexchange narkive permalink

Questo non è tecnicamente migliore . Una delle caratteristiche principali di Android è la simulazione del multitasking. Quando passi l'applicazione a un'altra (sì, anche il launcher della Home è un'applicazione), Android sospende l ' attività corrente e prova a caricare i dati della successiva in memoria. Quindi, qui possono accadere due cose:

  • Se c'è abbastanza memoria libera, i dati vengono caricati e la nuova attività viene avviata. In questo scenario, non ci sono problemi a tornare all'ultima applicazione, poiché è già in esecuzione;
  • Se c'è una mancanza di memoria, Android deve "eseguire il backup" dei dati dell'attività corrente nella memoria interna. Questo ha un costo e un ritardo; dopo averlo fatto, Android può finalmente caricare la nuova attività in memoria.

Dal punto di vista delle prestazioni, conservare quanti più dati possibile sulla memoria RAM è utile. Il fatto che i dati di un'app siano ancora in memoria non significa che stia consumando le risorse della batteria, a meno che non sia in esecuzione un servizio, il che non è sempre il caso.

Quindi, premendo i pulsanti Home o Back ha in pratica lo stesso effetto sull'utilizzo della memoria. Android è progettato per gestire la RAM stessa e non è una buona idea eliminare le app a meno che tu non sappia veramente cosa stai facendo.

Molte persone iniziano ad avere problemi quando utilizzano molte app che eseguono servizi in background. Alcuni servizi tendono a rimanere sempre in memoria eseguendo alcune attività (come tenerti online, controllare nuovi messaggi ecc.). Questo costa più risorse (memoria e batteria) e se il tuo telefono è lento ogni volta, è una buona idea controllare quali servizi sono in esecuzione e magari disinstallarne alcuni (puoi vederli in Configurazioni / Applicazioni / Servizi in esecuzione ).

Se vuoi saperne di più su questo argomento, dovresti dare un'occhiata a questo post: http://android-developers.blogspot.com.br/2010/ 04 / multitasking-android-way.html

staticsan
2012-09-07 06:58:24 UTC
view on stackexchange narkive permalink

Per quanto ho capito, Android dovrebbe occuparsene da solo. Molte app hanno servizi che vengono eseguiti quasi separatamente dalla parte visibile e parte del ciclo di vita delle app Android è che il sistema operativo può effettivamente scegliere di chiudere i thread come meglio crede.

Ma sepolta così bene nei documenti che non ricordo bene dove siano, ci sono le informazioni che il "ritorno" di un'app tenderà a spegnerla piuttosto che andare a "Home" . Le app ad alta intensità di grafica come "Angry Birds" dovrebbero essere chiuse in questo modo, infatti, perché l'app ha l'opportunità di arrestare correttamente i thread ad alta intensità di processore.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...