Meine App hat derzeit nur eine Form, die auf den Beschleunigungssensor hört. In meiner start()
Methode schalte ich den Listener ein, und in der stop()
Methode schalte ich ihn aus. Ich habe überprüft, dass der Hörer ausgeschaltet wird, wenn ich die Home-Taste des Androids drücke, aber wenn ich die Zurück-Taste drücke, wird die Anwendung beendet und das Android kehrt zum Home-Bildschirm zurück, aber der Hörer geht weiter, was bedeutet, dass die Methode stop()
nie aufgerufen wird . Ist es meine Verantwortung, die Zurück-Taste mit Code zu bedienen, um die stop()
Methode aufzurufen? Oder ist das ein Fehler im CodenameOne-Framework? Es scheint mir, dass, wenn die Zurück-Taste den Benutzer zum Home-Bildschirm zurückgibt, sollte es stop()
für mich anrufen.Kann der Zurück-Button nicht stop() aufrufen?
Antwort
Dies wurde behoben. Ich habe es überprüft und es funktioniert jetzt korrekt.
Ich weiß nicht über CodenameOne Rahmen, aber ich kenne die Android SDK
.
Activity.onBackPressed()
sollte aufgerufen werden, wenn Sie die Zurück-Schaltfläche verwenden. Nur weil Ihre Aktivität nicht mehr sichtbar ist, bedeutet das nicht, dass sie geerntet wurde, und dies könnte erklären, warum Activity.stop()
nicht (sofort) aufgerufen wird.
Je nach Anwendungsfall funktioniert auch Activity.onPause()
möglicherweise besser.
HTH. Viel Glück mit Ihrem Projekt.
Ich weiß nicht, über CodenameOne Rahmen, aber als App sichtbar ist und Sie drücken Zurück-Taste ruft alle vier Methoden in folgenden Reihenfolge
1)onBackPressed()
2)onPause()
3)onStop()
4)onDestroy()
und wenn Sie nach Hause Taste ruft es nur
1)onPause()
2)onStop()
methoden also, wenn Sie zurück drücken Taste onStop muss aufgerufen werden. Bitte geben Sie den Quellcode ein, damit die Leute Ihr Problem klar verstehen können.
Ich bin mir nicht sicher über alle Details Ihres Problems, aber Sie können es lösen, indem Sie den SetBackCommand auf diesem einen Formular aufrufen.
yourForm.setBackCommand(
new Command("closing the sensor listener"){
@Override
public void actionPerformed(ActionEvent ev){
// your code to close the listener
}
}
);
Dies scheint wie ein Fehler in Codenameon, wir werden das beheben. danke – Chen
Kannst du den Fehler Chen reproduzieren? –
Ja, dies ist bereits im Open-Source-Repository behoben. – Chen