Mehrere Activities, ein HTTPClient

  • 5 Antworten
  • Neuester Beitrag
Diskutiere Mehrere Activities, ein HTTPClient im Android App Entwicklung im Bereich Betriebssysteme & Apps.
P

pyr0t0n

Neues Mitglied
Hallo Leute,

ich brauche mal euren Rat. Ich programmiere eine App für ein OnlinePortal, da man sich dort erst einloggen muss bevor man was nutzen kann, habe ich eine Activity auf der man Benutzername und Passwort eingibt und nach einem druck auf Login dann eingeloggt wird. Soweit so gut, ich initialisiere einen HTTPClient in der Activity und übergebe diesen mit an den AsyncTask welcher den eigentlichen Request für den Login übernimmt.

Nach dem Login möchte ich ja nicht weiter die Activity mit der LoginForm anzeigen sondern eine Übersicht über den Account.

Lasse also vom AsyncTask eine Methode in meiner Activity aufrufen, welche die weitere Activity startet. Doch wie bekomme ich nun meinen HTTPClient in die weitere Activity, damit mir die LoginSession nicht verloren geht?

Danke schonmal für eure Hilfe.
 
DieGoldeneMitte

DieGoldeneMitte

Experte
Du kannst sie im android.app.Application-Objekt abspeichern.
 
P

pyr0t0n

Neues Mitglied
Hast du ne kurze Info wie ich das genau anstelle?
 
DieGoldeneMitte

DieGoldeneMitte

Experte
Du schreibst dir eine abgeleitete Klasse von Application,
baust da "get"ter und "set"ter rein,
meldest diese Klasse im Manifest als Application an.

Dann kannst du dir mit getApplication() die Application holen,
dann auf deine Klasse casten
und dann mit besagten getter/setter drauf zugreifen.

Also sowas in der Art (ungeprüft aus der Hüfte geschossen):
Code:
class MyApp extends Application {
  public void setHttpClient( HttpClient aClient ) { ... }
  public HttpClient getHttpClient() { ... }
}

... in der Activity ...
   MyApp myApp = (MyApp)getApplication();
 
Zuletzt bearbeitet:
P

pyr0t0n

Neues Mitglied
Ach so ist es gemeint...

würde dann nicht theoretisch auch

Code:
public class HTTPClient extends DefaultHttpClient {
	private static HTTPClient instance = null;
	
	public static HTTPClient getInstance() {
		if(instance == null) {
			instance = new HTTPClient();
		}
		return instance;
	}
}
und dann in dem AsyncTask den HTTPClient via

Code:
HTTPClient client = HTTPClient.getInstance();
instanziert. Dann würde ich ja bei einer erneuten instanzierung auch die bereits erstelle zurückgeben !?
 
DieGoldeneMitte

DieGoldeneMitte

Experte
Ja, ginge auch. Nur das Singletons schlechter zu erweitern sind.
 
Ähnliche Themen - Mehrere Activities, ein HTTPClient Antworten Datum
3
1