Ho una classe semplice per mantenere alcune variabili da condividere tra le attività nel mio gioco, qualcosa di simile a:Qual è il ciclo di vita di una variabile statica pubblica in Android?
public class TheGlobals {
public static boolean IsFullGame = false;
}
Ora, quando il lancio del gioco, l'attività iniziale è MainMenu, che determina se l'utente dispone acquistato il gioco completo e imposta la variabile di conseguenza. Ad esempio, nel caso l'utente abbia acquistato il gioco, lo farebbe
TheGlobals.IsFullGame = true;
Fin qui tutto bene. Da qui, l'utente fa clic su Riproduci e passa all'attività di gioco in cui si verifica l'azione di gioco principale. In questa seconda attività (di gioco), ci sono alcuni punti in cui controllo se si tratta del gioco completo/acquistato accedendo a quella variabile statica globale e abilitando o disabilitando determinate funzionalità di conseguenza.
Ora, l'utente suona e ad un certo punto tocca il pulsante Home o passa ad altre app. Dopo un po 'di tempo, l'utente torna al mio gioco, lanciandolo dalle app recenti, che apre il gioco da dove erano state interrotte, cioè direttamente nella seconda attività (di gioco), e l'utente continua felicemente a giocare.
Sono corretto per supporre che a questo punto, il valore della mia variabile statica globale può essere Vero o Falso, a seconda se il processo è stato distrutto o no, o c'è alcuna garanzia che Android ripristinerà il suo valore. Sto pensando che se il processo è stato mantenuto in vita, allora il valore rimarrà Vero (come è stato impostato nella prima attività) e si è conservato finché il processo è stato mantenuto in vita; o se il processo è stato distrutto e l'utente ritorna in un secondo momento e apre il mio gioco direttamente nella seconda attività (Gioco), il valore della variabile statica globale in quel caso sarà impostato su False (proprio come è definito sulla classe livello e senza possibilità di essere impostato nella prima attività).
Grazie per eventuali commenti.
@Levon - C'è qualcosa che mi è mancato dalla tua domanda? O non riesci a capire dalla mia risposta? – user370305
grazie user370305, ho capito la tua risposta e l'ho accettata. In definitiva, ho deciso di non archiviare nulla nelle variabili globali, ma piuttosto di mantenere quei valori con SharedPreferences. In questo modo posso sempre ripristinarli in qualsiasi altra attività nella stessa sessione o tra rilanci dell'app. – Levon