Object Sharing zwischen Aktivitäten in Android

Hi Ich habe eine Frage zum Weitergeben eines Objekts in der gesamten App. Angenommen, ich möchte ein großes benutzerdefiniertes Objekt in der gesamten App haben. Dieses Objekt wird von mehreren Aktivitäten und Diensten verwendet. Was ich zuerst getan habe, ist das.

Zunächst habe ich eine Application-Klasse erstellt und ein Singleton-Objekt definiert.

public class FooApplication extends Application {
    public static SharedObj obj;
    ...
}

Second, in einer Aktivität habe ich einen Wert für dieses Objekt gesetzt

public class FooActivity extends Activity {
    OnCreate() {
        FooApplication.obj = SharedObj.getInstance();
    }
}

Drittens, in einer anderen Aktivität greife ich auf dieses Objekt zu

public class BarActivity extends Activity {
    OnCreate() {
        SharedObj useThis = FooApplication.obj;
    }
}

Meine Frage ist, was ist daran falsch? Es scheint gut zu funktionieren, aber ich finde, dass manchmal der Wert dieses Singleton-Objekts aus irgendeinem Grund auf null gesetzt wird. Der Hauptgrund, warum ich dieses Objekt auf diese Weise teile, anstatt es paketfähig zu machen, ist, dass dies für mich ziemlich teuer ist und das, was ich getan habe, sehr einfach zu tun scheint. Gibt es einen Nachteil?

Nach einigen Recherchen habe ich herausgefunden, dass es eine andere Möglichkeit gibt, ein Objekt in der gesamten App zu teilen.

Zunächst in der App-Klasse definieren

public class FooApplication extends Application {
    public SharedObj obj = new SharedObj();
    ...
}

Second, initialisiere in einer Aktivität wie dieser

public class FooActivity extends Activity {
    OnCreate() {
        FooApplication fooApp = (FooApplication)getApplicationContext();
        fooApp.obj = new SharedObj();
    }
}

Drittens, in einer anderen Aktivität greife ich auf dieses Objekt zu

public class BarActivity extends Activity {
    OnCreate() {
        SharedObj useThis = ((FooApplication)getApplicationContext()).obj;
    }
}

Wie unterscheidet sich diese Methode (mit getapplicationContext ()) von der Verwendung eines Singleton-Objekts, wie ich es im ersten Abschnitt getan habe? Ist das mehr zu empfehlen?

Danke im Voraus

Antworten auf die Frage(2)

Ihre Antwort auf die Frage