2016-09-23 1 views
1

Ich Frage eine Reihe von Daten in der Haupttätigkeit meiner Anwendung, über eine ContentProvider, was ich in einem ArrayList speichern. Ich muss bestimmte Objekte zu anderen Aktivitäten oder Dienstleistungen übergeben, basierend auf Benutzereingaben, so dass alle Daten sammeln, was ich im neuen Kontext brauche, ist wirklich umständliche und schwere Arbeit. Ich will das nicht machen. Wie sollte ich diese Objekte zwischen den App-Komponenten speichern und weiterleiten?Wie soll ich meine Daten speichern, wenn auf sie aus verschiedenen Kontexten zugegriffen werden muss?

+1

Angenommen, Ihre Daten klein ist (wie Ihre Arraylist Wahl macht es scheinen) ich würde eher mach es parzellierbar und wirf es in Intents und Broadcasts um. – Machinarius

Antwort

0

Wenn die Daten klein sind, gehen Sie mit dem Intent-Mechanismus ... Wenn Sie eine große Menge von Daten haben, die nur für eine Sitzung in der App benötigt wird, gehen Sie mit einem Singelton ... Wenn Sie die Daten benötigen als persistent, mit sQLite-Datenbank gehen ... Sie auch eine Art von ORM überprüfen zu vermeiden, sQL-Code zu schreiben ...

0

Sie erstellen können statische Klasse zum speichern von Daten

zB

public class temp_data { 
    public static ArrayList arraylist; 
    public static String str="temp string is it"; 
} 

Anruf in Mainactivity.class

public class MainActivity extends AppCompatActivity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toast.makeText(MainActivity.this, ""+temp_data.str,Toast.LENGTH_SHORT).show();   
} 

es Toast "temp Zeichenfolge ist es"

Anmerkung: - - diese Daten, bis die App schließen sich nicht schließen, wenn App speichern kann dann Daten können verloren gehen.

  • und Daten können in der App-Aktivitäten zugreifen, Service oder reciver rufen Sie einfach

classname.variablename

+0

Beachten Sie, dass diese Methode Nullpointer-Ausnahmen verursachen kann, wenn der Gerätespeicher knapp wird, da der Garbage Collector möglicherweise Ihre statische Klasse und die darin enthaltenen Daten löscht, da sie möglicherweise nicht erkennt, dass die Daten noch benötigt werden. – Luke

+0

dann können Sie Datenbank oder gemeinsame Voreinstellungen verwenden oder nicht funktionieren, mein Vorschlag, Datenbank zu verwenden. es kann Daten wie mysql oder sql leicht speichern und Daten mit Abfrage leicht erhalten. Probieren Sie https://developer.android.com/training/basics/data-storage/databases.html aus – vishal

Verwandte Themen