2017-09-11 1 views
-1

Ich habe eine Aktivität A, es hat eine Schaltfläche zum Öffnen von B, die einen Datensatz einfügt. A kann dann die Ansicht in onActivityResult aktualisieren. Dies ist ein normaler Fluss.Android-Aktivität aktualisiert Fluss

Allerdings kann B teilen Absicht auch einen Datensatz einfügen. Wie kann A wissen, wann diese Aktion von B aus ausgeführt wird, um die Ansicht genau wie den normalen Fluss zu aktualisieren? (Natürlich nehme ich an, dass Akt A bereits im Hintergrund läuft)

Ich kann natürlich die Änderung mit onResume in A erkennen, aber ich möchte wissen, ob es eine richtige Methode ist. Danke

Antwort

0

Sie können onResume verwenden, um die Ansicht für Aktivität A zu aktualisieren. Da eine andere Methode broadcastReceiver und broadcastIntent verwenden würde und unnötige Belastung verursachen würde.

Sie sharedPreference verwenden können, zu speichern, wenn Daten in Aktivität B und dann in onResume von Aktivität A holen, die gemeinsamen Vorlieben und aktualisieren Sie die Ansicht

@Override 
protected void onResume() { 
    super.onResume(); 
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
    boolean isChanged = sharedPreferences.getBoolean("isChanged",false); 
    if(isChanged){ 
     //refresh your views 
     //clear the shared prefernce 
     SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit(); 
     editor.putBoolean("isChanged",false); 
     editor.apply(); 
    } 
} 

Erinnern Sie sich gesetzt haben, dass die gemeinsame Vorliebe in ACTIVITYB geändert worden, während Daten laden

SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit(); 
    editor.putBoolean("isChanged",true); 
    editor.apply();