- Forum-Beiträge: 14
08.03.2012, 20:09:07 via Website
08.03.2012 20:09:07 via Website
da ich nun schon länger privat am Programmieren bin, programmiere ich nun ein kleines Spiel (eine Art TowerDefense) für Android.
Nun habe ich das grundlegende des Spiels schon zum Laufen gebracht, aber was mich jetzt schon lange verfolgt ist:
"Wie beende ich meine App richtig?" bzw. "Wie gebe ich die Ressourcen richtig frei?"
Ich weiß natürlich, dass man seine App nicht wirklich beenden kann, aber möchte ich ja wenn ich die App wiederöffne kein Fehler bekommen und die App stürzt dann ab.
Derweil ist es so, dass ich nachdem ich meine App beendet habe, den TaskManager aufrufen und den Ram leeren muss. Ich habe mich natürlich informiert und bin soweit, dass ich in der onPause() Method meiner Activity die Ressourcen freigeben muss und in der onResume() Method wieder einelesen bzw. neu erzeugen muss. Zudem soll man natürlich Runnables und Threads freigeben.
Meine Activity macht im Grunde nur paar wesentliche Dinge: surfaceView kreieren und diese dann auch benutzen.
Diese surfaceView besitzt die ein Objekt meiner Klasse Simulation,welche das Spielgeschehen regelt und einen GameLoop (Thread), welcher die Aktualisierung und das Rendering aufruft. In der onSurfaceDestroyed() Method beende ich diesen Thread.
Ich habe jetzt schon viel im Internet rumgelesen ( SourceCodes, ForenEinträge, etc. ), aber konnte damit noch nicht mein Problem lösen.
Nun bin ich ratlos und versuche seit einigen Wochen meinen Fehler zu finden. Die Return-Taste von Android habe ich auch mal mit der finish() Method der Activity ausgestattet. War aber auch erfolglos.
Falls jemand den SourceCode einiger oder aller Klassen benötigt schicke ich diese gerne. Den SourceCode der Activity füge ich im Folgendem als Anhang hinzu.
Vielen Dank und mit freundlichen Grüßen
Anhang: Source Code von der GameActivity
public class GameActivity extends Activity {
GameView gameView = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
setRequestedOrientation(0);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
gameView = new GameView(this);
setContentView(gameView);
}
//
// die Override Implementation lass ich mal weg, da ich dort nur super aufrufe
//
}
— geändert am 08.03.2012, 20:10:56
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.