2013-05-14 60 views
1

Android的Cordova-2.7.0我有以下JS腳本。Phonegap(科爾多瓦) - 後退按鈕觸發暫停事件,而不是Android中的後退事件

在測試後退按鈕功能時,我遇到了一個奇怪的行爲。

在應用程序的第一個跑,當我按下後退按鈕「後退按鈕」事件被觸發並「onBackButton」函數被調用。

當我退出該應用程序並再次運行該應用程序,「onPauseButton」函數被調用按後退按鈕之後,而不是「onBackButton」功能。

經過詳細的研究,我意識到'navigator.app.exitApp();'(這是cordova函數)不會完全破壞Android應用程序。

如果我刪除從最近使用的應用列表中的應用程序並再次運行它,「後退按鈕」事件被觸發,當我按下後退按鈕「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(); 
    } 
} 

回答

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

+0

這能幫助非常多。但有趣的是,設備不需要準備好進行'document.addEventListener'調用。它只將給定的監聽器註冊到文檔對象內的給定事件類型。 – vaha 2013-05-14 08:30:50

相關問題