我已經嘗試了幾種使用Phonegap製作單頁原生應用程序的方法,並且正在尋求有關故障排除的一般性建議。內存警告/使用PhoneGap iPad應用程序崩潰
第一種方法: 它基本上是一堆裝用jQuery到生活在其中的索引頁的容器不同的頁面和子頁面。因此,不加載頁面,只需使用.load()將頁面中的頁面加載到外殼中。
第二種方法: 我做了一個頁面的HTML頁面的所有內容,然後顯示和隱藏,基於類的導航項目的匹配內容容器的標識。
這兩種方法都可以很好地機械地工作。問題似乎在於,我的所有子頁面都有一個畫廊或2-6張圖片(因此,我總共使用了超過215張圖片,660 x 440),因此我使用了jquery循環,並且Touchwipe可以用手勢啓動滾動。畫廊運行良好,但在瀏覽大約35個畫廊後,應用程序始終收到1級存儲警告,然後是2級,然後崩潰。我在儀器中的內存使用情況看起來不錯... ajax加載的分片版本保留大約2兆字節的實時字節,一頁分頁器保持在5兆字節左右。畫廊是由div中的CSS背景圖片組成的,因爲這看起來比標籤表現更好。
我沒有看到任何內存泄漏,或內存警告之外的任何其他問題。我有點困擾如何跟蹤這個。我已經完成了反覆試驗和錯誤的處理。已經將JavaScript降低到最基本的要求。隨着時間的推移,似乎正在增加。
關於如何弄清楚發生了什麼的任何想法?是否有一些第一方法來確保沒有任何事情發生與JavaScript導致某種類型的內存泄漏?
除了在iPad上,整件事情運行得非常好,這非常令人沮喪。
我的下一個策略可能是嘗試將圖庫背景圖像重寫爲空白gif,當他們不使用。
這裏是我使用的一個尋呼機代碼:
$(document).ready(function(){
document.addEventListener('touchmove', function(e){ e.preventDefault(); });
$('div#mainpages > div').hide();
$("ul#mainnav li").click(function() {
$("#mainpages > div").hide();
var navClass = $(this).attr('class');
var target='#'+navClass;
$(target).show();
$('[id^=subpages] > div').hide();
$(target).find('[id^=subpages_] div:first').show();
});
$('[id^=subnav] li').click(function() {
$('[id^=subnav_] li').removeClass('current');
$('[id^=subpages_] > div').hide();
var subnavClass = $(this).attr('class');
var subtargeted='#'+subnavClass;
$(subtargeted).show();
$(this).addClass('current');
$(subtargeted+' .gallery_div_shell').cycle({
timeout: 0,
speed: 700,
speedIn: 300,
speedOut: 300,
fx: 'scrollHorz'
});
$(subtargeted+' .gallery_div_shell').touchwipe({
wipeLeft: function() {
$('.gallery_div_shell').cycle("next");
},
wipeRight: function() {
$('.gallery_div_shell').cycle("prev");
}
});
});
});
感謝您的任何意見,我拉我的頭髮。
謝謝你看看,我也試過了。我首先在當前圖庫中添加了一個類,類似於「.active_gallery」,然後在導航的點擊事件中首先專門銷燬該特定的「循環」圖庫,然後在通過設置新的當前週期畫廊。還沒有任何運氣。無論如何,在滑過35家畫廊之後,它開始獲得記憶警告。 使用ajax加載應用程序,即使在破壞循環庫,刪除「擦除」處理程序等後,我也能得到相同的結果。 – Transoptic 2010-08-15 15:08:02