2012-12-18 7 views
9

Se java fornisce Garbage Collection, qual è la necessità di onDestroy() in Activity LIfecycle?Uso di onDestroy() in android

+1

Controllare questo: [Che cosa fa esattamente OnDestroy() distruggere?] [1] [1]: http://stackoverflow.com/a/4981927/556975 Spero che ti aiuta. Grazie. –

risposta

11

onDestroy: l'ultima chiamata ricevuta prima che l'attività venga distrutta. Questo può accadere o perché l'attività sta finendo (qualcuno ha chiamato finish() su di esso, o perché il sistema sta temporaneamente distruggendo questa istanza dell'attività per risparmiare spazio.

Ecco l'esempio ......

+7

Perché qualcuno dovrebbe chiamare "finish()" dentro "onDestroy", non ha alcun senso. – xmen

+1

Non puoi contare su onDestroy() che viene chiamato. "Ci sono situazioni in cui il sistema semplicemente uccide il processo di hosting dell'attività senza chiamare questo metodo (o qualsiasi altro) in esso, quindi non dovrebbe essere usato per fare cose che sono intese a rimanere in giro dopo che il processo va via." http://developer.android.com/reference/android/app/Activity.html#onDestroy() – Robert

0

L'OnDestroy è lì per lasciare la vostra applicazione hanno la possibilità finale per pulire le cose prima che l'attività venga distrutto

articolo Exit Button in Android

1

onDestroy() è un metodo chiamato dal framework quando la vostra attività è chiusura. Si chiama per consentire alla tua attività di fare qualsiasi operazione di spegnimento che potrebbe voler fare. Il metodo in realtà non ha nulla a che fare con la garbage collection (anche se le operazioni di spegnimento — potrebbero comportare il rilascio di risorse aggiuntive che possono essere gc). In particolare, non ha nulla a che fare con i C++ (a dispetto del suo nome).

Se non si dispone di operazioni di spegnimento, non è necessario sostituirlo. La classe base non fa essenzialmente nulla.

0

Offre al tuo programma la possibilità di fare cose come le risorse di pulizia (ad esempio i thread) in modo che non inquinino l'applicazione associata. Se non ne hai alcuna utilità, non sovrascriverlo.

See: onDestroy()-Android Reference

1

OS decide quando le cose "andare via". OnDestroy consente alla tua app di avere un'ultima possibilità di ripulire le cose prima che l'attività venga distrutta, ma ciò non significa che l'attività sarà, in effetti, GCed. Ecco un buon article che consiglio alle persone di leggere che si riferiscono alla creazione di un pulsante di uscita. Anche se non è esattamente quello che hai chiesto, i concetti ti aiuteranno a capire cosa sta succedendo.

0

onDestroy può essere chiamato quando un'attività viene distrutta, ma non si può contare su di essa. Ci sono situazioni in cui il sistema semplicemente uccide il processo di hosting dell'attività senza chiamare questo metodo (o altri) in esso, quindi non dovrebbe essere usato per fare cose che sono destinate a rimanere in giro dopo che il processo va via.

Vedi: http://developer.android.com/reference/android/app/Activity.html#onDestroy()

1

È possibile utilizzare onDestroy() per finalizzare il programma. L'ho usato nel codice qui sotto per dire al server che il client sta chiudendo il suo socket al server in modo da poter notificare l'utente sul server che il client ha disconnesso.

cliente:

... 
protected void onDestroy(){ 
    super.onDestroy(); 
    if(connected) { 
     clientMessage.println("exit"); 
     clientMessage.close(); 
     try { 
      socket.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    finish(); 
} 
... 

server:

... 
while (connected) { 
    input = clientMessage.readLine(); 
    if ("exit".equals(input)){ 
     break; 
    } 
    ... 
} 
... 
Problemi correlati