Artykuł

freeimages.com freeimages.com
wrz 08 2016
0

Klasa Device w Xamarin.Forms

W poprzednich wpisach sporo pisałem o różnych sposobach obsługi poszczególnych systemów wspieranych przez aplikację. Odradzałem wykorzystywanie projektów typu Shared, zachęcałem zaś do bibliotek portable.

Rozwiązanie w wariancie portable niesie swoje ograniczenia, ale tak na dobrą sprawę wymusza na programiście bardziej przemyślane podejście i zwiększa przejrzystość tworzonego kodu. Okazuje się jednak, że nawet w takiej sytuacji, można skorzystać z pewnych specjalnych rozwiązań przygotowanych przez twórców Xamarina. Konkretniej chodzi o klasę Device, która wystawia dwie istotne właściwości oraz udostępnia kilka przydatnych metod, które pozwalają na uruchamianie kodu specyficznego dla poszczególnych systemów.

Idiom i OS

Klasa Device pozwala na łatwe sprawdzenie rodzaju używanego i systemu operacyjnego. Obie te rzeczy możemy zweryfikować za pomocą dedykowanych enumów. Pierwszy (Idiom) wystawia wartości:

  • Desktop
  • Phone
  • Tablet
  • Unsupported

Drugi z nich (OS) skupia się na systemach operacyjnych. Nie podaje konkretnej wersji, ale pozwala nam na ogólne stwierdzenie czy mamy do czynienia z Androidem, iOSem, Windowsem, Windows Phonem, czy też może jeszcze z innym, niesklasyfikowanym systemem.

Dzięki temu możemy zrobić proste wstawki z kodem, które będą realizować zadania tylko w przypadku gdy mamy do czynienia z określonym OSem.

Metody

Klasa Device wykształca też pewien zbiór metod. Do najważniejszych z nich zaliczyłbym poniższy zestaw, który występuje w różnych przeciążeniach:

  • BeginInvokeOnMainThread - pozwala na wywołanie akcji na wątku UI. Przydatne w przypadku blokujących operacji
  • GetNamedSize - Xamarin.Forms predefiniuje kilka wielkości dla fontów - np. Small, czy Large. Po ich przekazaniu do tej metody (enum), otrzymamy rzeczywistą wartość double, w systemie w którym wywołano metodę
  • OnPlatform(Action, Action, Action, Action) - wywołuje inne akcje zależnie od systemu. Kolejno iOS, Android, Windows Phone, akcja domyślna
  • OnPlatform(T, T, T) : T - zwraca inne wartości dla określonej właściwości w zależności od systemu. Kolejność jak wyżej
  • StartTimer - pozwala na uruchomienie Timera, który zadziała na każdym systemie. Niestety nie jest on do końca funkcjonalny i sprawdza się raczej tylko w prostych operacjach

Na stronie dokumentacji można znaleźć konkretne przykłady dla poszczególnych metod, dlatego też pominę je tutaj. Warto jednak pamiętać o tej klasie, ale jak wszystko - stosować z rozsądkiem i umiarem;)

Podoba Ci się ten wpis? Powiedz o tym innym!

Send to Kindle

Komentarze

blog comments powered by Disqus