Ho bisogno della mia app per Android per salvarlo su disco quando la sua attività viene messa in background o uccisa. È stato suggerito di avviare un thread quando onPause() viene chiamato ed eseguire lì costose procedure di I/O (vedere Saving/loading document state quickly and robustly for image editor).In che modo Android gestisce i thread in background quando si lascia un'attività?
In quali situazioni il sistema operativo uccide il thread e con quale frequenza si verificano queste situazioni?
Suppongo che sarà come il modo in cui vengono gestite le attività in cui il sistema operativo può decidere arbitrariamente di interrompere il thread, ma lo farà per lo più solo quando le risorse sono estremamente limitate. Sarebbe bello trovare una documentazione specifica di questo però.
Giocando in giro, con un po 'di codice di test, un thread in background avviato in onPause() verrà eseguito a tempo indeterminato in background sul mio dispositivo (ho provato a caricare un sacco di app e non sono riuscito a farlo morire).
Per la mia app specifica, sto scrivendo un editor di bitmap in cui sto utilizzando il pattern Command e il pattern Memento per consentire l'annullamento e il ripristino delle modifiche. Mi piacerebbe che l'utente fosse in grado di annullare/ripristinare le proprie modifiche anche ad es. l'utente riceve una telefonata e l'attività viene interrotta quando viene messa in background. La soluzione migliore che riesco a pensare è quella di utilizzare un thread in background per salvare costantemente il mio comando e ricordare gli oggetti sul disco durante l'uso dell'applicazione e per finire di salvare qualsiasi oggetto che rimane in un thread in background se viene chiamato onPause. Nel peggiore dei casi, se il thread viene ucciso, perderò solo alcune modifiche.
Giusto per chiarire, se si crea un thread nel processo che è collegato ad alcune attività, questo thread verrà ucciso quando l'attività viene uccisa (cioè il processo e il thread sono collegati)? – memcom
@tifftuff: un'attività non è un'applicazione. Un'attività è un componente di un'applicazione. Un'applicazione può avere molti componenti, tra cui attività multiple, servizi, ecc. Quando l'ultimo componente di un'applicazione viene distrutto (ad esempio, l'utente preme INDIETRO dall'attività one-and-only in una piccola applicazione), il processo è destinato al riciclaggio o risoluzione. NON PERDERE I FILETTI. Se avvii la discussione, devi provvedere alla sua risoluzione, poiché Android non la risolverà per te, se non terminando la procedura, che potrebbe non verificarsi per alcune settimane. – CommonsWare
Grazie. Avete qualche consiglio su se un servizio sarebbe più appropriato da usare rispetto a un thread per questo lavoro in background? – memcom