2010-12-27 14 views

Odpowiedz

5

Dużym profesjonalistą w używaniu tego podejścia jest to, że wymaga on bardzo niewielkiego wysiłku z Twojej strony i że twoja aplikacja przetrwa zmiany konfiguracji bez uciekania się do awarii.

Niewielką wadą jest to, że przy użyciu zasobów specyficznych dla konfiguracji (dla orientacji poziomej lub pionowej) nie są one stosowane automatycznie.

W moim (może małym) doświadczeniu, myślę, że nie jest to naprawdę warte wysiłku, aby wykonać całą instalację wodno-kanalizacyjną.

"Właściwa" obsługa tych zmian wymaga dużo pracy z twojej strony, a sytuacja staje się jeszcze bardziej dramatyczna, jeśli musisz obsługiwać okna dialogowe postępu podczas zmian orientacji ekranu.

Chociaż większość ludzi zdecyduje się na szybką naprawę, zmieniając manifest i konfigurując swoją aktywność za pomocą android: configChanges = "keyboardHidden | orientation", myślę, że ważne jest, aby zdać sobie sprawę, że istnieją alternatywne rozwiązania.

Wymaga więcej kodu, ale zapewnia lepszy wgląd w ogólną funkcjonalność systemu.

6

To dziwne, że Google naprawdę nie porozmawiać o rozumowanie za nim, ale istnieją trzy główne powody, mogę myśleć, aby uniknąć używania tego podejścia:

  • z mojego doświadczenia, niektóre rodzaje view (szczególnie WebView i MapViews na Androidzie 2.1 lub niższym) mogą zachowywać się dość dziwnie po zmianie orientacji, jeśli nie zostały odtworzone (na przykład zmienione przyciski zoomu).
  • Zapobiega stosowaniu układów specyficznych dla orientacji (zobacz na przykład widok krajobrazu nowej aplikacji Market).
  • To może powstrzymać cię przed wykryciem błędnego zachowania z twojej aplikacji w związku z innymi powodami, dla których Twoja Aktywność może zostać zniszczona i odtworzona (np. Słaba pamięć lub inne normalne zabójstwa w tle). Oznacza to, że jeśli twoja działalność może z wdziękiem obsługiwać ponowne uruchomienie z powodu rotacji, prawdopodobnie może obsłużyć ponowne uruchomienie z powodu zabijania tła. Jeśli jednak pominiesz rotację obsługi, nie możesz napotkać restartu z powodu zabijania tła podczas normalnego testowania, dopóki użytkownik ze starszym telefonem o niskiej pamięci nie zarejestruje się z raportem o błędzie.

Ostatni powód jest wielki; szczególnie ze starszymi telefonami o niskiej pamięci RAM i podobno bardziej agresywnymi zachowaniami w Gingerbread, twoje działania muszą wiedzieć, jak szybko odtworzyć je po zniszczeniu, zapisując ich stan, bez względu na orientację. A kiedy twoje działania będą w stanie poradzić sobie z takimi rodzajami zniszczenia/rekreacji, prawdopodobnie wszystko gotowe do zmiany zmiany zabije. Możesz uzyskać pewną prędkość, pochłaniając zdarzenie rotacyjne (ponieważ nie musisz wracać przez układy i to wszystko), ale to już wszystko.

Jeśli zdecydujesz się połknąć rotacje, zdecydowanie zalecamy zawsze używanie emulatora lub urządzenia z zaznaczoną opcją "Natychmiastowe niszczenie aktywności" Development.apk, a następnie upewnianie się, że przełączanie aplikacji lub tworzenie kopii zapasowej stosu zadań nadal działa poprawnie.

Z mojego doświadczenia wynika, że ​​pochłanianie rotacji może być dobrym wyborem dla poprawy komfortu użytkownika, szczególnie w przypadku czynności o złożonych układach, które mogą zająć kilka chwil, aby odtworzyć, ale naprawdę trzeba dokładnie i skutecznie sprawdzić, czy aktywność nadal działają nawet bez ignorowania obrotu.

+0

Informacje o WebView, jest problematyczne, ponieważ zmiana orientacji podczas ładowania spowoduje ponowne uruchomienie ładowania. Jak już przeczytałem, nie możesz przywrócić jego stanu (i jest nawet napisany w dokumentach) –

Powiązane problemy