Последние два года я работаю с flex над некоторыми настольными приложениями. До сих пор у меня никогда не было проблем, связанных с производительностью, но сегодня, когда мы завершили разработку мобильного приложения для iPad, я столкнулся с проблемой: приложение на iPad невероятно медленное.
http://i.stack.imgur.com/qkbWn.png
Медленно, означает, что когда я нажимаю кнопку в меню, чтобы изменить splitview, я должен ждать что-то вроде 5 с. Затем прокрутка очень медленная, с двумя кадрами в секунду, и мой TextInput начинает глючить (текст больше не находится в его поле).
Я начал читать много постов и презентаций в блоге об оптимизации для мобильной платформы, а затем переписывал некоторые компоненты, которые я использую. Например, я удалил SkinnableContainer и заменил его группой VGroup, включая некоторые чертежи на основе ActionScript.
Теперь, что вы видите, это VGroup (темно-серая), содержащая некоторые другие VGroup (группа с заголовком здесь), а затем каждый виджет - это HGroup с меткой и виджетом. Я использую только Label и TextInput для текста.
Время создания медленное даже (несколько секунд для создания представления) для другой страницы, на которой есть только 4 текстовых виджета, или другого, содержащего только список с настраиваемым средством визуализации элементов, где каждая строка представляет собой набор из 4 меток .
Все это связано с RobotLegs, ничего особенного, одна модель добавляется в представление, и в начале я устанавливаю переменную-член в представление с этим объектом, чтобы связать мои переменные.
Честно говоря, я сейчас думаю: это пахнет подозрительно, потому что, если я все сделал правильно, невозможно добиться такой низкой производительности и думать, что flex конкурентоспособен на мобильной платформе. Так что сейчас я пытаюсь отключить приложение по частям, чтобы попытаться найти то, что может замедлить его. У меня есть пара подозреваемых, чтобы проверить, например, у меня есть какое-то обязывающее предупреждение, чтобы проверить, а затем посмотреть, есть ли доля проблемы у роботы.
Так что мой главный вопрос здесь заключается в том, что вы думаете, и не могли бы вы дать некоторые идеи о том, «есть ли проблема» и «как мы ее решим».
Спасибо