2013-07-17 30 views
6

Mam aplikacja działa na urządzeniach typu tablet z dwoma szybami, na lewym jednego mam prostą animację na zastąpienie fragmentu:Dlaczego ustawienie sprzętu przypisanego do wartości false powoduje przyspieszenie działania?

private void loadLeftFragment(Fragment fragment, boolean isAnimated) { 
     FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 

     if (isAnimated) { 
      fragmentTransaction.setCustomAnimations(android.R.anim.slide_in_left, 
        android.R.anim.slide_out_right); 
     } 

     fragmentTransaction.addToBackStack(null); 
     fragmentTransaction.replace(R.id.left_frame, fragment).commit(); 
    } 

Proszę zauważyć spokój animacji kodu. Działa idealnie gładko na Nexusie 7, ale na Galaxy Tab 2 nie jest. Więc eksperymentowałem z tagiem android:hardwareAccelerated="true/false" w AndroidManifest.xml. I mam to, że gdy wartość jest ustawiona na false animacja na Galaxy Tab 2 jest taka, jak na Nexusie 7, czyli gładka i dobrze wyglądająca. Nie spodziewałem się takiego zachowania, zakładając, że powinno być odwrotnie - ustawienie wartości hardwareAccelerated na true powoduje, że rzeczy stają się bardziej płynne. Ale zdarza się, jeśli ustawię go na true Widzę opóźnienia, kiedy false jest po prostu miło! Czego tu mi brakuje? Dziękuję Ci.

Odpowiedz

7

Wszystko zależy od użycia pamięci. Co się dzieje, gdy włączasz akcelerację sprzętową, to animacje aplikacji i UI są generowane przez procesor graficzny, co powoduje, że system bierze udział w wykorzystaniu pamięci. Ładowanie sterowników OpenGL dla każdego procesu zajmuje około 2 MB pamięci i zwiększa ją do 8 MB. Na urządzeniach z ograniczoną pamięcią RAM może to być poważny problem. Gdy więcej pamięci RAM zostanie zjedzone, system będzie musiał zamknąć więcej zadań wykonywanych w tle, aby zaoszczędzić pamięć.

Ta opcja musi być używana sprytnie iw zależności od urządzeń docelowych.

+0

Ale jak budować zależności? Czy masz na to jakiś działający przykład na różnych rzeczywistych urządzeniach? – djdance

Powiązane problemy