1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

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

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von biker126, 17.11.2010.

  1. biker126, 17.11.2010 #1
    biker126

    biker126 Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    17.11.2010
    Phone:
    HTC Desire
    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:
    [​IMG][​IMG]
    [​IMG]
    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
     
  2. HeroUser96, 18.11.2010 #2
    HeroUser96

    HeroUser96 Android-Hilfe.de Mitglied

    Beiträge:
    53
    Erhaltene Danke:
    2
    Registriert seit:
    15.09.2010
    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.
     
    biker126 bedankt sich.
  3. funcoder, 18.11.2010 #3
    funcoder

    funcoder Erfahrener Benutzer

    Beiträge:
    218
    Erhaltene Danke:
    38
    Registriert seit:
    15.08.2009
    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.
     
    biker126 bedankt sich.
  4. biker126, 18.11.2010 #4
    biker126

    biker126 Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    17.11.2010
    Phone:
    HTC Desire
    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... ;-)
     

Diese Seite empfehlen