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

Unterschiedliche Ausführgeschwindigkeit...

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Schw4nzusLongus, 15.03.2011.

  1. Schw4nzusLongus, 15.03.2011 #1
    Schw4nzusLongus

    Schw4nzusLongus Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Hi,
    bin gerade dabei ein Kartenspiel-App zu programmieren.
    Ich stehe aber jetzt vor dem Problem, dass das Programm mal unheimlich schnell agiert und mal extrem träge,
    also bestimmt Faktor 10 unterschiedlich schnell (bei exakt gleichen Programmablauf).
    Es läuft praktisch so ab:
    Computer 1 schiebt Karte in die Mitte, dann Computer 2 und dann gibt Computer 3 zu.
    (Kleine Pausen zwischen den PCs lasse ich von Handlern erledigen)
    Danach wird solange gewartet, bis ich über den OnTouchlistener auch eine Karte zugebe. In der Zwischenzeit wird eigtl. nur der Hintergrund inkl. Karten "gedrawed".
    Würde ich als nicht so sehr aufwendig bezeichnen. Aber mal ises so, als würde die Karte am Finger kleben und mal zuckt sie hinterher.

    Ach ja, was mir auch noch Kopfzerbrechen bereitet,
    wie kann man sein xml-layout, dass im nachhinein per Code verändert wurde am einfachsten mit dem SharedPreferences abspeichern?
    Oder muss man wirklich alle Eigenschaften dafür auslesen?

    Und letzte Frage, wenn man das Handy dreht, was wird dann aufgerufen? onRestart? onResume?

    Wäre super, wenn mir jemand helfen könnte.

    Schon mal danke und Gruß,
    Schw4nzusLongus
     
  2. wilco, 15.03.2011 #2
    wilco

    wilco Android-Hilfe.de Mitglied

    Beiträge:
    106
    Erhaltene Danke:
    32
    Registriert seit:
    10.08.2010
    Wenn Du das Handy drehst wird die App neu gestartet. Also wird onCreate() aufgerufen.

    Für den Ablauf Deiner App würde ich Dir die Verwendung von Threads empfehlen. Im Main-Thread, also der Anwendung an sich, bearbeitest Du die Nutzereingaben. Die Grafik-Darstellung würde ich in einen separaten Thread verlagern, die Spiel-Logik (wie z.B. die Zugberechnung beim Kartenspiel) ggf in einen dritten Thread.

    Wenn Du richtig in das Thema einsteigen möchtest kann ich Dir den folgenden Blog empfehlen.
     
    Schw4nzusLongus bedankt sich.
  3. funcoder, 16.03.2011 #3
    funcoder

    funcoder Erfahrener Benutzer

    Beiträge:
    218
    Erhaltene Danke:
    38
    Registriert seit:
    15.08.2009
    Also die gesamte Touchscreen / Steuerungs Logik bzw. deine View läuft auf jeden Fall in einem Thread. Deine Game Loop muss in einem separaten Thread laufen.
    Damit kann dein Frontend niemals mehr "einfrieren".

    Zu den Performance Problemen, was sagt dir logcat? Läuft eventuell in bestimmten Zyklen die Garbage Collection an? Die GC hat leider ziemlich hohe Laufzeiten von bis zu 300ms was die Framerate entsprechend einbrechen lässt.

    Ansonsten überprüfe mal deine Draw Methode. In der Draw Methode darf nicht ein Objekt instanziert werden. Lieber eine Klassenvariable machen und sämtlicihe Objekte (bei denen sich eh nichts ändert) einmal am Anfang instanzieren und deklarieren.
     
    Schw4nzusLongus bedankt sich.
  4. Schw4nzusLongus, 18.03.2011 #4
    Schw4nzusLongus

    Schw4nzusLongus Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    hi,
    schon mal vielen dank.
    ich lass jetzt die view in einen eigenen thread laufen.
    o la la, läuft etz ziemlich geschmeidig.

    zum game loop:
    sowas gibts ja nicht bei mir. die computer-gegner berechnen ihre züge
    und dann wird auf meine eingabe gewartet, wozu brauch ich da ne spielschleife?
    und ich weiß auch nicht, wie ich dann da einen extra thread mit einbauen soll.

    hat jemand noch ne lösung zum abspeichern von meinem xml-layout?

    gruß,
    SL
     

Diese Seite empfehlen