2010-05-04 28 views
5

Spędziłem setki naszych aplikacji Adobe AIR w wersji Flex 4.0, a teraz uważam, że powinienem był zakończyć, ale po uruchomieniu aplikacji na więcej niż kilka godzin zaczyna się reakcja UI brak ...Powolna reakcja aplikacji Adobe AIR po okresie bezczynności

Co mogę zrobić: Moja aplikacja używa niestandardowych chromów, ustawiając backgroundImages z przezroczystością na BorderContainers w Window-modules. Otwieram wiele różnych okienek wyskakujących, które są oparte na klasie okna (nie TitleWindow!) I są dynamicznie tworzone i zamykane w języku ActionScript. Korzystając z Flex Profiler, z pewnością wiem, że garbage collector poprawnie niszczy wszystkie przydzielone ressources, a zużycie pamięci nie wzrasta wraz z czasem działania aplikacji. Ponadto profiler pokazuje mi, że żadna z moich metod nie zajmuje dużego czasu procesora, więc powinno to być również w porządku.

Co jest naprawdę interesujące: Jeśli stale wchodzę w interakcję z aplikacją (przyciski, napisz tekst, ...) nic się nie dzieje i wszystko jest w porządku, ALE jeśli nie wchodzę w interakcje z aplikacją przez kilka minut, a potem przychodzę z powrotem - reakcja na UI jest naprawdę słaba!

Naprawdę kiepskie oznacza, że ​​jeśli wpiszesz jakiś tekst do kontrolki TextInput-Control, mogę oglądać każdą zapisaną literę z opóźnieniem co najmniej 1 sekundy!

Czy ktoś doświadczył podobnej sytuacji lub ktoś, kto wie, jaki może być problem? Moja sugestia jest taka, że ​​po pewnym działaniu Flash-Player-Runtime ogranicza użycie procesora aplikacji AIR i nie przywraca pełnej mocy po powrocie użytkownika.

Przetestowałem aplikację z Flex 4.0, Flex 4.1, 1.5, AIR 2.0 i Flash Player 9 oraz Flash Player 10 w systemie Windows XP i Windows 7 ...

Odpowiedz

5

I w końcu znaleźć rozwiązanie!

Nowe elementy iskrzenia wprowadzone za pomocą Flex 4 dodały właściwość o nazwie "backgroundFramerate" do klasy WindowedApplication. Domyślnie ta właściwość ma wartość 1, co oznacza, że ​​środowisko AIR automatycznie dławi klatek na sekundę, gdy główne okno aplikacji (!) Staje się nieaktywne. Niestety ta liczba klatek na sekundę jest używana dla całej aplikacji, w tym wszystkich innych instancji okien, które mogą być na pierwszym planie i aktywne!

Po wyłączeniu automatycznego zmniejszania szybkości klatek poprzez ustawienie właściwości backgroundFramerate na -1 wszystkie problemy zniknęły!

Mimo to, wiem, że instiating nowe obiekty pochodne okna, aby wyświetlić okna wyskakujące, uważam, że jest to błąd w Flex 4, który wciąż nie jest naprawiony.