Tipps / Erklärung für activity stack, tasks & bundles

B

biker126

Neues Mitglied
0
Hallöchen

Ich hab vor ein paar Wochen mit Android programming angefangen und mir gedacht ich mach ein Spiel - und zwar den guten, alten Klassiker Tetris :) (nicht zuletzt auch weil alle Tetris Games aus dem Market die ich gefunden hab ne scheiss Steuerung haben :p).

Das Game an sich läuft auch schon wunderbar, nur möcht ich jetzt n bisschen "Beigemüse" rundrum bauen. D.h. Menus mit denen man das Game konfigurieren, Highscore anschauen kann usw. Ich seh das auch gleichzeitig als gute Übung um mich etwas tiefer in die Thematik von Activities, Intent, task & Bundle einzuarbeiten...

Was ich für den Anfang machen möchte ist folgendes Activity-Diagramm:
n9activitydiagrammjpgp
ac

activitydiagrammjpg.png

By biker126 at 2010-11-17

Ich denk wie ich von A -> B -> C -> D komm weiss ich. Auch wie ich von B -> D komme (ist ein anderer Game Mode).

Was ich nicht sicher weiss: Wie stell ich sicher, dass ich vom home screen immer in A lande? (wobei A meine root activity ist) Mit dem Attribut "clearTaskOnLaunch" in der activity beschreibung im Manifest?

Was ich gar nicht weiss: Was muss ich machen, dass ich mit dem BACK button von D --> A komme und NICHT D --> C? (im Gegensatz zu C --> B --> A was möglich sein soll, wohl aber standart ist, denk ich).

Was ich auch nicht sicher weiss: Wie kann ich in A feststellen, ob D bereits läuft (d.h. wohl noch im stack ist). Wenn ich das weiss, kann ich die View von A so konfigurieren, dass man den shortcut auswählen kann und den richtigen Intent schicken :)
Weiter hab ich noch nicht rausgefunden was die Lebensdauer von so nem Bundle ist. Lebt so ein Bundle so lange wie mein task (d.h. der stack) vorhanden ist?

Ich weiss, es sind n Haufen Fragen, aber vielleicht ist ja jemand so nett und nimmt sich die Zeit um mir n paar Tipps zu geben? :)

Danke schonmal!
Gruss biker
 
Was ich gar nicht weiss: Was muss ich machen, dass ich mit dem BACK button von D --> A komme und NICHT D --> C? (im Gegensatz zu C --> B --> A was möglich sein soll, wohl aber standart ist, denk ich).

Ich bin mir nicht ganz sicher, ob das das ist, was du willst, aber um die Activity b zu "überspringen", kannst du einfach, nachdem du von B aus C mit einem Intent gestartet hast, in deiner Activity b die Mehtode finish() aufrufen.

Dann wird die Activity beendet und du kommst zurück zu der anderen Activity, die noch läuft.
 
  • Danke
Reaktionen: biker126
Wenn ich dich richtig verstehe möchtest du den Back-Button anderst belegen bzw. die normale "Reihenfolge" verändern.

Ich würde es so machen, dass du in der D-Activity die onDestroy Methode überschreibst:

Code:
@Override
    protected void onDestroy(){
        super.onDestroy(); 
    	// Activity Code -> startActivity(intent); 
    }

Und dein gewöhnlichen Activity Aufruf startest.

Du könntest aber auch bei den vorherigen Activitys das Intent-Flag("Intent.FLAG_ACTIVITY_NO_HISTORY") setzen, was deine Activity NICHT in die Activity-List mit aufnimmt.
 
  • Danke
Reaktionen: biker126
das sind 3 viel versprechende varianten! ich glaub, das mit dem flag setzen klingt fast am einfachsten. weil B und C (C manchmal sogar gar nicht) brauch ich nur um input daten vom user zusammen zu sammeln um sie dann D zu übergeben. D.h. es ist eigentlich ideal wenn die gar nicht erst in der history landen :)

Danke euch!

Jetzt muss ich "nur" noch rausfinden wie ich feststellen kann ob eine activity schon "läuft" (und einfach nicht sichtbar ist im moment weil ja eine andere angezeigt wird) bzw. schonmal gestartet wurde und wie ich zustandsdaten von so ner activity abfragen kann... ;-)
 

Ähnliche Themen

netfreak
  • netfreak
Antworten
10
Aufrufe
455
netfreak
netfreak
5
Antworten
0
Aufrufe
1.142
586920
5
Y
Antworten
4
Aufrufe
1.212
swa00
swa00
Zurück
Oben Unten