Ich habe eine Singleton-Klasse namens DataManager
. Ich aktualisiere einige Daten in DataManager
, wenn ich onStop()
in einer Klasse (activity
) genannt userProfile
aufrufen. Es nimmt die Werte aus einigen Texteingabefeldern und aktualisiert das Objekt User
in DataManger
. Ich navigiere durch meine App mit einer BottomNavigationView
- also wenn ich das Home-Icon aus der userProfile
Ansicht drücke, sollte ich die userProfile
onStop()
anrufen und die Werte aktualisieren. Das funktioniert richtig. Ich bin durch den Code gegangen und die Werte in meiner singleton
Klasse werden korrekt aktualisiert. Das Problem tritt auf, wenn ich versuche, die Werte von der Homepage zu lesen. Die Werte wurden noch nicht aktualisiert. ABER wenn ich die Ansicht erneut öffne oder eine andere Ansicht öffne, sind die Werte in DataManager
die korrekten aktualisierten Werte. Was denkst du, ist das Problem?Android - Singleton Klasse nur bei Aktualisierung aktualisiert
Ich bin nicht sicher, ob seine relevanten, aber home und userProfile
beide erben von einer Basisklasse, die die onCreate()
-Methode von beiden untergeordneten Klassen enthält.
Singleton
Klasse DataManager
genannt:
public class DataManager {
private static DataManager only_instance = null;
public List<Facility> facilities;
public List<Procedure> procedures;
public static User theUser;
public DataManager(){
only_instance.theUser = new User();
}
public static DataManager getInstance(){
if(only_instance == null){
only_instance = new DataManager();
}
return only_instance;
}
}
Die OnStop() -Methode von Userprofile
@Override
protected void onStop(){
super.onStop();
DataManager dm = DataManager.getInstance();
dm.theUser.<SET LOTS OF VALUES>
}
Gehen Sie von userProfile zu homePage zurück? –
Es ist im Allgemeinen eine gute Übung, einen privaten Standardkonstruktor zu schreiben, damit Sie nicht versehentlich eine neue Instanz ohne Bedeutung erstellen. Auch @Archit wies darauf hin, dass Sie eine neue Objekterzeugung innerhalb eines Synchronisierungsblocks einschließen sollten. Oder noch besser: Synchronisieren Sie die gesamte Methode. – Abbas
@TentenPonce Ich glaube nicht, dass ich zurück gehe - es ist nur zu verschiedenen Aktivitäten, die ich hin- und herwechseln mit einem Bottom Navigation Manager –