1

使用适用于 Android 的 Cordova-2.7.0 我有以下 JS 脚本。

在测试后退按钮功能时,我遇到了一个奇怪的行为。

在应用程序的第一次运行时,当我按下后退按钮时,会触发“backbutton”事件并调用“onBackButton”函数。

当我退出应用程序并再次运行应用程序时,按下后退按钮后会调用“onPauseButton”函数而不是“onBackButton”函数。

经过详细研究,我意识到'navigator.app.exitApp();' (这是cordova函数)不会完全破坏Android应用程序。

如果我从最近的应用程序列表中删除应用程序并再次运行它, 则会触发“后退按钮”事件,并且当我按下后退按钮时会调用“onBackButton”函数。

所以,我想在应用程序的每次运行中捕获“后退按钮”事件。

你建议我怎么做?

谢谢,VH

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();
    }
} 
4

1 回答 1

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 文档链接:http: //docs.phonegap.com/en/2.7.0/cordova_events_events.md.html#Events

于 2013-05-14T08:11:16.487 回答