2017-03-15 4 views
1

Kann ich verhindern, dass die App fortgesetzt wird, wenn sie von einem anderen Prozess gelöscht wird?Relaunch-App bei Wiederaufnahme des Hintergrunds

Ich habe ein Problem, wo ich Singleton Klasse Instanz in habe, hält es durch app alle meine Informationen über Benutzer und Sachen gesammelt von API. Wenn ich die App aus dem Hintergrund öffne (wenn es von einem Prozess abgebrochen wird), bekomme ich null auf User Model (Bildpfade, Name ...) und App crushes.

Der beste Weg für mich ist App Relaunch von Launcher-Bildschirm und erhalten Sie alle Informationen erneut, nicht wieder aufgenommen. Irgendeine Lösung dafür?

+0

Können zeigen Ihnen, wie verwenden Sie UserModel innerhalb Aktivität Neuer/Fragment? –

+0

Alle Abschnitte unter https://developer.android.com/guide/components/activities/index.html – samosaris

Antwort

0

Kann ich verhindern, dass App wieder aufzunehmen, wenn es von anderem Prozess getötet hat?

Es gibt drei Möglichkeiten, eine App sein kann "wieder aufgenommen", durch einen Aufruf an beiden onCreate, onStart oder onResume. Welcher aufgerufen wird, hängt davon ab, wie Ihre App "gesperrt" wurde und was in diesem Zustand passiert.

onResume folgt , die auftritt, wenn eine andere Anwendung in den Vordergrund gebracht wird.

onStart (onRestart) folgt onStop, die auftritt, wenn die App nicht mehr sichtbar ist.

onCreate folgt oder onStop wenn Ihr Gedächtnis zu einer anderen App verloren.

Wenn ich App Hintergrund öffne ich immer Nulls auf User-Modell (Bild Pfade, Namen ...)

Versuchen persistierenden diese Benutzerdaten in onSaveInstanceState (wenn es durch einen Prozess getötet hat)

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putString(STATE_USER, mUser); 
    // Always call the superclass so it can save the view hierarchy state 
    super.onSaveInstanceState(savedInstanceState); 
} 

und die Wiederherstellung in beiden onCreate oder onRestoreInstanceState

static final String STATE_USER = "user"; 
private String mUser; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Check whether we're recreating a previously destroyed instance 
    if (savedInstanceState != null) { 
     // Restore user data from saved state 
     mUser = savedInstanceState.getString(STATE_USER); 
    } 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onRestoreInstanceState(savedInstanceState); 
    text.setText(savedInstanceState.getString(STATE_USER)); 
} 
Verwandte Themen