Android Hardwarebuttons

Network

Top Contributor
Hi,

<<<<< [Optionale Vorgeschichte] >>>>>
also erstmal ich bin völlig neu in der Programmierung auf AndroidDevices, jedoch kenn ich mich sehr gut mit Java allgemein aus.
Und zurzeit versuche ich mein erstes Spiel zu programmieren.
Leider bin ich irgendwie extrem verwirrt was Aktionen wie Bildschirm drehen oder Programm in StandBy Modus versetzen angeht. So hab ich verschiedene Beispiele auf verschiedenen Website getestet, aber bei allen stürtzt das Programm ab oder es hängt sich auf sobald man den Bildschirm dreht.

Irgendwo hab ich gelesen, dass ein Programm jedesmal neugestartet wird, sobald man den Bildschirm dreht oder das Programm wieder aufruft. Stimmt das?

In der AndroidDoc gibt es ein Bsp Programm für die API15 "LunarLander", dieses habe ich mal API10 reinkopiert. Funktioniert bestens, auch wenn ich den Unterschied im Code nicht sehen kann, zu den anderen Programmen die abgestürtzt sind.


<<<<< [Frage] >>>>>
1.) Wie konfiguriere ich ein Programm darauf, aus dem StandBy Modus wieder aufgerufen werden zu können?
Bei mir kommt leider nur ein schwarzer Bildschirm, mit Titel ohne Vollbildmodus - anderst beim ersten Start!
2.) Wie konfiguriere ich ein Programm darauf, mit einem Klick auf den Zurük-HardwareButton sich zu beenden?
Es verschwindet zwar aus dem Taskmanager bei mir, es tritt danach aber der selbe Fehler wie oben auf.

=> Den Code lasse ich einfach mal weg, vieleicht gibt es ja irgendeine Methode die man mit einem Standardcode überschreiben oder aufrufen muss.
Außerdem hab ich das Programm leider ziemlich zugebaut. Falls ihr das auch braucht, dann extrahiere ich gerne mal den Hauptprogrammcode (Activity, Spielschleife, SurfaceView)

Vielen Dank
Network
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
1) Du musst auf die Zustände deiner App achten. Die App startet nicht neu, wenn sich die Orientierung ändert, aber deine View:
activity_lifecycle.png


Wenn du hier schaust kannst du lesen, was passiert, wenn sich z.B. die orientierung ändert:
When such a change occurs, Android recreates the running activity (the system calls onDestroy(), then immediately calls onCreate()).

Zuständen hälst du dann mit
Code:
onSaveInstanceState
fest und stellst diese mit
Code:
onRestoreInstanceState
wieder her.

2) Keine Ahnung. Ist aber eigentl. auch nicht notwendig auf Android. Da wird die App vom System getötet, wenn sie nicht mehr gebraucht wird (etwas ungewohnt, aber man gewöhnt sich dran). Also sofern es nicht unbedingt notwendig ist, würde ich mich darum garnicht kümmern.
 

Network

Top Contributor
Vielen Dank!
Nur eins ist mir immernoch ein Rätsel. Bei meinem Programm ist nach dem drehen immernoch alles vorhanden, obwohl ich keiner der Dinge unter dem beigelegten Link auch nur Ansatzweise gemacht habe, bei 129 verschiedenen Objekten würde ich das wissen :)

Der eklige Moment wenn man einen Bug hat der aber genau das tut was man teilweise will... genial

Aber nochmals vielen Dank
 
T

Tomate_Salat

Gast
Ohne Code kann ich dazu wenige sagen. Aber:
Android speichert die Zustände von allen Views die eine ID besitzen. Kannst du einfach testen. Erstelle eine Maske mit 2 TextViews und nur eines hat eine ID. Ändere den Text und ändere die Orientierung des Smartphones. Du wirst sehen: nur das TV mit ID behält den Text.
 

Oben