2012-02-23 11 views
5

Attualmente, ho un'applicazione che salverà uno screenshot temporaneo e consentirà agli utenti di condividerlo tramite Facebook. Il codice di salvataggio dell'immagine è più o meno come segue.È responsabilità del programmatore eliminare il file temporaneo

// Use external cache dir, as our image file is large (>1M) 
File outputDir = this.getExternalCacheDir(); 
File tempFile = File.createTempFile("CHEOK", "CHEOK", outputDir); 
// In Desktop's J2SE, this file will automatically be deleted, once my desktop 
// application quit. However, this is not the case for Android. My guess is, JVM 
// is not terminated, even our Android application had quit. 
tempFile.deleteOnExit(); 

mi rendo conto anche io lasciare il mio applicazione Android (Premendo sistema pulsante "indietro"), il file temporaneo è ancora lì, anche stiamo usando deleteOnExit. La mia ipotesi è che la JVM non sia ancora terminata.

Posso sapere, è responsabilità del programmatore dell'applicazione, eliminare il file temporaneo creato durante l'attività onDestroy? In caso contrario, qual è la migliore prassi comune?

+0

Penso che il motivo per cui non è stato attivato a causa di come Android gestisce i ricordi, un pulsante indietro non ucciderà l'app ma la lascerà in memoria ma non sarà attiva. Il mio spazio sulla scheda SD del mio telefono Android diventa sempre più piccolo in quanto molte app non eliminano i file cache/temp, non sono sicuro del perché, ma penso che sia meglio eliminarli una volta che non ne hai bisogno –

risposta

0

AFAIK Sì, è responsabilità dell'utente eliminare i file non più necessari (che siano temporanei o meno). Il sistema operativo non può sapere per quanto tempo l'app utilizzerà quel file.

+0

posso presupporre che il file rimarrà finché l'app è in esecuzione, anche se altre app vengono eseguite e creano i propri file temporanei? –

+0

Sì, lo si può supporre. – m0skit0

+0

puoi per favore mostrare un riferimento a questo? Inoltre, ho fatto un post su questo qui: http://stackoverflow.com/questions/17942700/do-temporary-files-get-deleted-even-while-the-app-is-running –

1

Fino a ogni applicazione per mantenere pulita la casa (o meglio il dispositivo). :)

Detto

  • La JVM è sempre in esecuzione per quanto riguarda Android viene avviato e funzionante. Quindi il file dovrebbe essere cancellato se il dispositivo viene riavviato.
  • Ci sono buone probabilità che l'utente si offenda se un'app lascia file temporanei anche quando l'app è stata chiusa.

Quindi chiudere il file temporaneo da soli, quando hai finito con esso. Non è necessario nemmeno fino all'uscita dall'app!

Problemi correlati