
438
|
第十二章
var detectWakeFromSleep_ = function() {
var now = new Date().getTime();
var delta = now - this.lastTick_;
if (delta > THRESHOLD) {
// App 可能在睡著後醒來了。
notifyWakeFromSleep(delta/1000);
}
lastTick_ = now;
};
在
notifyWakeFromSleep()
方法中,你可以根據收到的參數(告訴你從上次啟動狀態算起
經過多少秒數)來決定要做什麼事情。在 delta 時間是 10 秒或 1 天(86,400 秒)的情況
下,你要做的事情可能會不一樣。例如,在一段很長的 delta 之後,你或許想要顯示一
個警告,或者,如果新結果是由 Ajax 讀取時,顯示載入動畫。
在這個情況之下,我們可能沒有喚醒網頁的機會:如果設備已經耗盡記憶
體,而且我們的網頁處於幕後,瀏覽器可能會刪除網頁狀態來釋放記憶體,
所以當使用者回來時,我們的網頁會以一個新的對話,透過 URL 載入。
請記得,由休眠醒來之後,文字與指令碼處於同樣的狀態(包括它們的 HTML 內容與
JavaScript 變數),因為它們是進入睡眠,除非作業系統或瀏覽器決定完全將它們從記憶
體移除,在這個情況下,網站將會被重新載入。
幕後標籤通知技巧
雖然從使用者的角度來看,這或許是個惱人的行為,但舊的 HTML 機制可讓我們定義一
個中繼標籤,每隔