Methode Daten mehrern Activities zur Verfügung zu stellen

B

BlupBlup

Ambitioniertes Mitglied
1
Hi,

angenommen ich habe 4 Activities, die auf denselben Daten operieren
(Daten abfragen, Daten verändern), was ist die beste Methode um
die Daten allen 4 Activities zur Verfügung zu stellen?

- Die Hauptactivity erstellt ein Objekt (z.B. namens "model") und übergibt
eine Referenz auf dieses Model an jede Acitivity, die von der Hauptactivity
aus aufgerufen wird. Die aufgerufene Acitivity kann die Referenz nun auch
an eine weitere Activity ebenfalls übergeben, falls auch sie eine Activity aufruft. Hier ist die Frage wie einfach können Memory Leaks entstehen, worauf muss geachtet werden?

- Man verwendet eine Klasse die nur statische öffentliche Attribute hat. Vorteil wäre hierbei jede der 4 Activites könnte auf diese Attribute zugreifen
und diese verändern ohne, dass man ein Objekt dieser Klasse erstellen müsste und mühselig die Referenzen weitergeben muss.

- Man verwendet SharedPreferences. Allerdings missbraucht man dann denke ich den eigentlich Zweck der SharedPreferences. Sie sind ja eigentlich für das Speichern von Einstellung gedacht.

- Verwendung der SQLite Datenbank. Allerdings muss man hier eine Datenbank erstellen und auf die Datenbank zugreifen. Wenn man dann als Attribute selbst erstelle Klassen/Objekte verwendet, könnte das abspeichern der Daten in der Datenbank aufwändig werden.

Meine Frage: Wie geht ihr dabei vor, wenn ihr Daten mehreren Activities zur Verfügung stellen wollt, die abgefragt und verändert werden sollen können?
(Beispiel: Eine der vier Activites erstellt Fotos und ihr wollt, die Anzahl der geschossenen Fotos in jeder der vier Acitivites zur jeder Zeit abfragen können und verändern können. Eine Activity zählt die Anzahl der Fotos hoch, eine andere Activity zählt die Anzahl der geschossenen Fotos wieder runter, falls das Foto wieder gelöscht oder vor dem Anwender versteckt wurde. Eine andere Activity zeigt einfach nur die Gesamtanzahl der geschossenen Fotos dar.)
 
Hey ho,

Ich erstelle mir einen "Service" der die Sachen verwaltet und stelle den als Singelton global bereit.

lg. Dagobert
 
  • Danke
Reaktionen: BlupBlup
Ich vermute mit "Service" meinst du nicht die Android Komponente Service von der eine Klasse ableiten kann und für Hintergrundoperationen verwendet wird.

Du meinst vermutlich einfach irgendeine selbst erstellte Klasse, die von keiner der vier Android Komponenten erbt.

Du erstellst also ein Objekt dieser Klasse. Wie stellst du es denn den anderen Activities global bereit? Das Klingt nach dem Verfahren, dass ich als erstes aufgelistet habe, mit dem Model. Erstellst du das Objekt in der MainActivity und übergibst dann an die anderen Activities die Referenz auf dieses Objekt?

Der ursprüngliche Beitrag von 13:20 Uhr wurde um 13:37 Uhr ergänzt:

Hab grad verstanden wie du das Objekt mehreren Activites zur Verfügung stellst.
Hab mir grad das Singleton Pattern durchgelesen. Eine interessante Möglichkeit.
 
Jop deine Schlussfolgerungen sind richtig, deswegen ja das "Service" beim schreiben...
hier mal ein Beispiel:
Code:
public interface UserService {

	void getMeAsync(DataCallback<UserProfile> callback);

	long getMyId();

}

Dann erstelle ich mir so ein Singelton:
Code:
package de.veeapp.app.android.service.user.factory;

import de.veeapp.app.android.service.user.UserService;
import de.veeapp.app.android.service.user.impl.UserServiceImpl;

public class UserServiceFactory {

	private static UserService instance;

	public static UserService getUserService() {
		if (instance == null) {
			instance = new UserServiceImpl();
		}

		return instance;
	}
}

und kann ich so überall verwenden mit
Code:
UserServuceFactory.getUserService()

lg. Dagobert
 
  • Danke
Reaktionen: BlupBlup
Danke für den Tipp
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
5
Aufrufe
118
swa00
swa00
A
Antworten
10
Aufrufe
1.018
swa00
swa00
A
Antworten
10
Aufrufe
1.903
swa00
swa00
Zurück
Oben Unten