Minulla on skenaario, jossa kirjautumisen jälkeen kirjautumissivun kautta on kirjautumispainike jokaisessa toiminnossa.
Kun napsautan "uloskirjautuminen"-painiketta, annan kirjautuneen käyttäjän "session id"-tunnuksen uloskirjautumiseen. Voisiko joku opastaa minua, miten pidän session id
:n käytettävissä kaikissa activities
-toiminnoissa?
Vaihtoehtoja tälle tapaukselle?
Helpoin tapa tehdä tämä olisi siirtää istunnon id uloskirjautumisaktiviteetille Intent
-tiedotteessa, jota käytät aktiviteetin käynnistämiseen:
Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent);
Käytä tuota intentia seuraavassa aktiviteetissa:
String sessionId = getIntent().getStringExtra("EXTRA_SESSION_ID");
Tarkoitusten docs sisältää lisätietoja (katso osio "Extras").
Intent extran välittäminen on hyvä lähestymistapa, kuten Erich totesi.
Application-objekti on kuitenkin toinen tapa, ja se on joskus helpompi, kun samaa tilaa käsitellään useissa toiminnoissa (toisin kuin jos sitä pitäisi hakea/laittaa joka paikkaan) tai kun on kyse monimutkaisemmista objekteista kuin primitiiveistä ja merkkijonoista.
Voit laajentaa Application-oliota ja asettaa/saada sinne mitä tahansa haluamasi ja käyttää sitä mistä tahansa Activitystä (samassa sovelluksessa) getApplication() -oliolla.
Pidä myös mielessä, että muut lähestymistavat, kuten staattisuus, voivat olla ongelmallisia, koska ne voivat johtaa muistivuotoihin. Application auttaa ratkaisemaan myös tämän.
Yritä toimia seuraavasti:
Luo yksinkertainen "helper" -luokka (tehdas Intentsille), kuten tämä:
import android.content.Intent;
public class IntentHelper {
public static final Intent createYourSpecialIntent(Intent src) {
return new Intent("YourSpecialIntent").addCategory("YourSpecialCategory").putExtras(src);
}
}
Tästä tulee kaikkien Intenttiesi tehdas. Aina kun tarvitset uuden Intentin, luo staattinen tehdasmetodi IntentHelper-luokkaan. Luodaksesi uuden Intentin sinun tulisi vain sanoa se näin:
IntentHelper.createYourSpecialIntent(getIntent());
Aktiviteetissasi. Kun haluat "tallentaa" joitakin tietoja "istuntoon" käytä vain seuraavaa:
IntentHelper.createYourSpecialIntent(getIntent()).putExtra("YOUR_FIELD_NAME", fieldValueToSave);
Ja lähetä tämä Intent. Kohdeaktiviteetissa kenttäsi on käytettävissä muodossa:
getIntent().getStringExtra("YOUR_FIELD_NAME");
Nyt voimme siis käyttää Intentiä kuten vanhaa istuntoa (kuten servleteissä tai JSP:ssä).