使用Cordova-2.7.0 for Android我有以下JS脚本。
在测试后退按钮功能时,我遇到了一种奇怪的行为。
在应用程序的第一次运行时,当我按下后退按钮'后退'事件被触发并且'onBackButton'函数被调用。
当我退出应用程序并再次运行应用程序时,按下后退按钮后会调用'onPauseButton'函数而不是'onBackButton'函数。
经过详细研究后,我意识到'navigator.app.exitApp();'(这是cordova函数)并没有完全破坏Android应用程序。
如果我从最近的应用列表中删除该应用并再次运行,则会触发'backbutton'事件,当我按下后面时会调用'onBackButton'功能 - 按钮。
所以,我想在每次运行应用程序时捕获'backbutton'事件。
你建议我做什么?
谢谢,V.H。
initialize: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
document.addEventListener('backbutton', this.onBackButton, true);
document.addEventListener('pause', this.onPauseButton, true);
},
onDeviceReady: function() {
console.log("onDeviceReady called");
},
onPauseButton: function() {
console.log("onPauseButton called");
},
onBackButton: function() {
console.log("onBackButton called");
console.log("current view: "+GUIManager.currentView);
if(GUIManager.VIEW_LOCALE == GUIManager.currentView ){
GUIManager.showMatchListScreen();
} else if(GUIManager.VIEW_MATCHLIST == GUIManager.currentView){
navigator.app.exitApp();
}
}
答案 0 :(得分:1)
我不知道它是否会解决您的问题。但根据您的代码,您可能会尝试调用某些Cordova方法,而Cordova尚未加载。
initialize: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
console.log("onDeviceReady called");
document.addEventListener('backbutton', this.onBackButton, true);
document.addEventListener('pause', this.onPauseButton, true);
},
onPauseButton: function() {
console.log("onPauseButton called");
},
onBackButton: function() {
console.log("onBackButton called");
console.log("current view: "+GUIManager.currentView);
if(GUIManager.VIEW_LOCALE == GUIManager.currentView ){
GUIManager.showMatchListScreen();
} else if(GUIManager.VIEW_MATCHLIST == GUIManager.currentView){
navigator.app.exitApp();
}
}
请参阅有关事件的phonegap doc链接:http://docs.phonegap.com/en/2.7.0/cordova_events_events.md.html#Events