2016-04-08 8 views
0

Ich habe alle Fragen zum Beenden von Android-Anwendung gelesen. Aber ich konnte die Antwort auf mein Problem nicht finden.Wie beenden Android-Anwendungen?

Also was ist mein Problem. Meine Anwendung ist ein Musikplayer, geschrieben in Qt (C++/QML). Ich habe es speziell für mein Auto geschrieben. Zuerst war es ein UMPC mit Windows, jetzt habe ich ein Aftermarket-Steuergerät mit Android. Ich habe meinen Player erfolgreich auf Android portiert.

Jetzt versuche ich folgendes Problem zu lösen. Wenn ich mein Auto schließe, schaltet sich auch der Android "Computer" in meinem Radio aus. Ich möchte den aktuellen Track und den Track-Fortschritt speichern, damit ich ihn beim nächsten Start fortsetzen kann.

Ist es möglich, das Signal von Android zu erfassen, dass meine App schließen und die Einstellungen speichern soll? Oder tötet Android meine Anwendung, ohne dass ich darauf reagieren kann?

Momentan speichere ich den Fortschritt alle 10 Sekunden in einer Datenbank. Aber ich fühle das nicht ideal. Ich würde gerne wissen, wie Anwendungen in Android in diesen Situationen sind geschlossen:

1) Die App ist im Hintergrund und O entscheidet es mehr RAM benötigt und beendet es 2) Benutzer ruft App mein Anwendungsmenü ein klaut weg Schalt 3) System schaltet sich aus 4) Ein "Batterieschoner" (Task Killer) schließt meine Anwendung

Kann ich auf einige dieser Situationen reagieren und etwas unternehmen, bevor meine App geschlossen wird.

+0

Did versuchst du 'onDestroy()'? –

+0

Ich schreibe es mit C++, damit ich dieses Signal nicht bekommen kann. – JeCh

Antwort

1

enter image description here

Bitte dies für mehr Verständnis beziehen sich auf Activity life cycle

+0

OK, ich werde versuchen, einen Java-Teil meiner Anwendung zu implementieren und werde versuchen, nach dem onDestroy() - Signal zu suchen. – JeCh

+0

Aber laut der Dokumentation kann meine App getötet werden, ohne den onDestroy trotzdem aufzurufen. Was genau passiert, wenn das System herunterfährt? Wird dieses Signal ausgegeben und kann ich die Einstellungen speichern? – JeCh

+0

Versuchen Sie, dies zu lesen http://android-developers.blogspot.in/2010/04/multitasking-android-way.html –

0

Wenn Sie ApplicationWindow verwenden (Sie erwähnen Sie QML verwenden, so sollten Sie, dass verwenden) es trivial ist:

onClosing: { 
    saveYourSettings() 
    close.accepted = true 
} 
+0

Leider ist es nicht so einfach. Dies war mein erster Versuch, der nicht einmal auf Desktop-Betriebssystemen funktionierte. Ich muss die "saveSettings" -Funktion auf dem C++ Teil aufrufen. Aber die Anwendungen wurden manchmal geschlossen, bevor die Einstellungen gespeichert wurden, oder sie wurde mit einem Fehler beendet. Am Ende habe ich einen eventFilter implementiert, der QEvent :: Close abfängt und die Einstellungen speichert, bevor meine Anwendung beendet wird. Leider funktioniert das bei Android nicht. – JeCh

+1

Sie können C++ - Funktionen von QML aufrufen, sie nur als Mitglieder eines Kontexteigenschaftsobjekts verfügbar machen. Außerdem funktioniert es wie erwartet auf Desktop-Plattformen, getestet in Windows und Linux. – dtech

+0

Entschuldigung, ich habe meinen Kommentar gepostet, bevor er fertig war. Ich weiß, wie man eine C++ Funktion von QML und umgekehrt nennt, aber wie ich schrieb, funktioniert das nicht. Ich habe eine Lösung gefunden, die überall funktioniert, außer Android (oder vielleicht anderen mobilen Betriebssystemen), da sie einen anderen App-Lebenszyklus als Desktop haben. – JeCh