Предупреждения/катастрофический отказ памяти с приложением для iPad PhoneGap

Я попробовал несколько подходов для создания использования исходного приложения на одну страницу Phonegap, и обращаюсь за некоторым общим советом на поиске и устранении неисправностей.

Первый подход: это - в основном набор различных страниц и подстраниц, загруженных jQuery в контейнеры, которые живут на индексной странице. Так, никакие загрузки страницы, просто загрузив фрагменты страницы из страниц в оболочку, с помощью .load ().

Второй подход: Я сделал страницу HTML на одну страницу со всем содержанием, затем покажите и скройте это на основе соответствия классу элемента навигации к идентификатору контейнера содержания.

Оба подхода хорошо работают механически. Проблема, кажется, заключается в том, что все мои подстраницы имеют галерею или 2-6 изображений, (таким образом, у меня есть в общей сложности более чем 215 изображений в целом, 660 x 440), для которого я использовал цикл jQuery и Touchwipe для активации прокрутки жестами. Галереи хорошо работают, но после некоторого просмотра приблизительно 35 галерей, приложение всегда получает уровень 1 предупреждения памяти, затем 2, затем отказывает. Мое использование памяти в инструментах кажется хорошо..., что ajax загрузился, версия фрагмента остается живые байты приблизительно на 2 мегабайта, одностраничный документ последовательно остается приблизительно в 5 meg. Галереи состоят из фоновых изображений 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");
            } 
        });  
    });
});

Спасибо за любой совет я вытаскиваю волосы.

6
задан Alex Gyoshev 15 August 2010 в 14:05
поделиться