Se java fornisce Garbage Collection, qual è la necessità di onDestroy() in Activity LIfecycle?Uso di onDestroy() in android
risposta
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 ......
Perché qualcuno dovrebbe chiamare "finish()" dentro "onDestroy", non ha alcun senso. – xmen
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
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
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.
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.
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.
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()
È 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;
}
...
}
...
- 1. Android onStop/onDestroy - quando potrebbero essere utilizzati?
- 2. Attività Android onDestroy() chiamata su blocco schermo
- 3. Frammento Android onCreateView dopo onDestroy non richiamato
- 4. onStop vs onDestroy
- 5. invoca IntentService da onDestroy
- 6. Metodi attività: onCreate() e onDestroy()
- 7. Android: quando annullare la registrazione del listener - onStop() o onDestroy()
- 8. Uso di NDK Android
- 9. L'app per Android non chiama "onDestroy()" quando viene uccisa (ICS)
- 10. Uso di color e color.darker in Android?
- 11. Uso di DU su Android
- 12. Uso pratico di Android XmlResourceParser?
- 13. Classe statica in Java (Android) - uso o non uso
- 14. Android: uso debugmode in galassia s2
- 15. Uso di esempio di RtpStream su Android
- 16. Android: Howto uso clipRect in API15
- 17. Uso "Best Practice" Android di Intents
- 18. Uso di OpenGL per sostituire Canvas - Android
- 19. Uso delle icone nelle preferenze di Android
- 20. Android: che uso ha l'AnchorView di MediaController?
- 21. Elaborazione per Android, uso di librerie
- 22. uso sicuro di glMapBufferRange() su Android/Java
- 23. Quale versione di Eclipse uso per Android?
- 24. Perché implementare onDestroy() se non è garantito il richiamo?
- 25. onDestroyView set pratiche Null di attività OnDestroy/del Frammento
- 26. Uso del Bluetooth nell'emulatore Android
- 27. Uso corretto di yieldIfContendedSafely() in un'applicazione Android con multithreading
- 28. Android - Uso di view.setX() e setY in api 8
- 29. uso corretto del programma di caricamento classi (soprattutto in Android)
- 30. L'istanza dell'attività esiste ancora anche dopo che onDestroy() è chiamato
Controllare questo: [Che cosa fa esattamente OnDestroy() distruggere?] [1] [1]: http://stackoverflow.com/a/4981927/556975 Spero che ti aiuta. Grazie. –