2012-07-12 10 views
7

Molte delle mie attività caricano dati dinamici da un server e quando la pagina torna a essere messa a fuoco, la ricarico comunque. Sembra uno spreco tenerli in giro se sto solo andando a ricaricare la loro, così ho pensato di chiamare finitura() su di loro se l'utente si sposta dalla pagina. La sua confusione se alcune attività è possibile premere il pulsante indietro per andare e altri no perché ho chiamato finish() su di loro, quindi mi chiedevo se è una cattiva pratica solo per chiamare finish() su tutte le attività che l'utente naviga lontano da ? (Ho una barra di navigazione nella parte inferiore di ogni attività, quindi il pulsante Indietro non è necessario). Oppure è meglio non chiamare finish() su nessuna delle attività e spero solo che non rallentino il telefono e che il sistema operativo si occupi della raccolta dei rifiuti? Sono nuovo alla programmazione Android e non ho un telefono Android, quindi non sono sicuro di quale sia la pratica comune/migliore in questa situazione, o se sia solo questione di gusti personali.Best practice per chiamare finitura() su un'attività in Android?

Inoltre, è possibile indicare a Android di mantenere una cronologia delle attività in modo che il pulsante Indietro funzioni ancora, ma termini() quando si spostano in modo da non occupare inutilmente le risorse?

+3

Solo per attivare l'utente Android * (hai detto che non hai un telefono Android), hai detto che potrebbe non essere necessario utilizzare il pulsante Indietro perché hai una barra di navigazione in ogni attività. Io per primo * sempre * uso il pulsante indietro, non importa quale sia l'interfaccia, solo per pura abitudine. Qualcosa da tenere a mente ... buona fortuna! – Tom

risposta

6

Mentre è possibile ricaricare tutti i dati quando si ritorna all'attività, non è ancora possibile chiamare finish().

Quando le attività sono nascoste, non utilizzano risorse e non rappresentano un problema reale. Lasciali come sono, e poi quando l'utente torna indietro, lo ricaricherà come richiesto.

In questo stato, possono anche essere raccolti in caso di necessità, cosa di cui si occupa Android.

0

Nella maggior parte dei casi non è necessario (e non dovrebbe) chiamare finish(); Android si occupa della gestione delle attività per te.

Se è necessario eseguire la pulizia quando un utente lascia l'attività, è possibile eseguire questo tipo di operazioni nelle varie richiamate attività come onDestroy().

Se non lo hai già fatto, leggi Activities nella guida per sviluppatori Android.

0

Non si dovrebbe chiamare finish() a meno che non si sia sicuri che l'attività non verrà eseguita in un lungo periodo. È meglio lasciare che Android gestisca cosa fare con esso. Inserisci il codice di pulizia in onPause() e il codice di caricamento in onResume().