730 likes | 853 Views
How to master?. Paweł Żochowski. pawel.zochowski@studentpartner.pl http://zozofromelk.wordpress.com/. Agenda. Mechanizmy dostępu do danych i sensorów Baza danych SQL CE Kontrolki do przedstawiania danych Fast Application Switching Multitasking Live Tiles Zarabiaj! Zakręć się.
E N D
Paweł Żochowski pawel.zochowski@studentpartner.pl http://zozofromelk.wordpress.com/
Agenda • Mechanizmy dostępu do danych i sensorów • Baza danych SQL CE • Kontrolki do przedstawianiadanych • Fast Application Switching • Multitasking • Live Tiles • Zarabiaj! • Zakręć się
Mechanizmy dostępu do danych i sensorów Launchers and Choosers
Sposoby dostępu do danych • Izolacja środowiska telefonu od aplikacji użytkownika • Zapewnione proste metody i funkcje, niewymagające samodzielnego przedstawiania danych • Zapewnienie bezpieczeństwa i spójności danych naszego klienta
Lista chooserów • Address Chooser Task for Windows Phone • Camera Capture Task for Windows Phone • Email Address Chooser Task for Windows Phone • Game Invite Task for Windows Phone • Phone Number Chooser Task for Windows Phone • Photo Chooser Task for Windows Phone • Save Contact Task for Windows Phone • Save Email Address Task for Windows Phone • Save Phone Number Task for Windows Phone • Save Ringtone Task for Windows Phone
Sposoby dostępu do sensorówi komunikacji • Działanie sensorów niezależne od działania naszej aplikacji • Brak możliwości ingerencji w wewnętrzne warstwy systemu • Odczyt i zapis zawsze płynny i dobrze obsłużony • Obsługa map, telefonu, maili i SMS’ów (wraz z historią) • Odtwarzanie mediów • Bezpieczeństwo prywatności naszego klienta
Lista launcherów • Bing Maps Directions Task • Bing Maps Task • Connection Settings Task • Email Compose Task • Marketplace Detail Task • Marketplace Hub Task • Marketplace Review Task • Marketplace Search Task • Media Player Launcher • Phone Call Task • Search Task • Share Link Task • Share Status Task • SMS Compose Task • Web Browser Task
Baza danych SQL CE Przechowywanie danych
Czym jest SQL CE • Relacyjna baza danych oparta na plikach • Działa bardzo podobnie jak bazy MSSQL • Oczywiście trochę ograniczona • Dostęp odbywa się przez LINQ to SQL
Różnice pomiędzy MSSQL a SQL CE • SQL CE działa jako proces na telefonie, nie aplikacja klient-serwer • Dostęp do SQL CE może odbywać się jedynie za pośrednictwem LINQ to SQL • T-SQL nie jest wspierany! • Dostęp tylko z aplikacji wywołującej • SQL CE jest umieszczona w IsolatedStorage
Kontrolki do przedstawiania danych Panorama & Pivot
Metro UI Design Guidelines • Metro to nie WP7! • Design czysty, lekki, prosty i szybki • Odpowiednie elementy do odpowiednich zastosowań • Wrażliwość na dotyk http://www.riagenic.com/archives/487 http://msdn.microsoft.com/en-us/library/hh202915(v=VS.92).aspx
Data Grid • Nie stosuje się… • Przypadki dozwolone: Tabela z danymi
Panorama • Tylko orientacja pionowa • Jest opcja poziomej, ale się nie stosuje • Listy oraz elementy poziome • Efekt paralaksy • Zastosowanie: Menu
Pivot • Łatwiej zapisuje się stan kontrolki • Lekka i niekoniecznie zasobożerna • W obu orientacjach wygląda dobrze • Zastosowanie: Zestawienie skategoryzowanych danych
Typografia 42pt 20pt 11pt 9pt
Szybkie przełączenie się między aplikacjami Fast Application Switching
Cykl życia aplikacji - uśpienie Szybkie wznowienie aplikacji Przywrócenie stanu e.IsApplicationInstancePreserved== true Zapis stanu Odpięcie zasobów Zawieszenie wątków i timerów 23
Cykl życia aplikacji - Tombstoning Resuming.. . Przywrócenie stanu e.IsApplicationInstancePreserved== false activated Tombstoned Tombstone Najstarszej aplikacji Odpięcie zasobów Zawieszenie wątków i timerów
Wznawianie działania aplikacji • Obsługa zdarzenia aktywowania aplikacji sprawdza, czy stan został zachowany privatevoidApplication_Activated(object sender, ActivatedEventArgs e) { if (e.IsApplicationInstancePreserved) { // Dormant - objects in memory intact } else { // Tombstoned - need to reload } }
Obsługa deaktywowania zasobów Dezaktywacja aplikacji MediaPlayer.Pause MediaElement.Pause SoundEffectInstance.Pause VibrateController.Stop PhotoCamera.Dispose Zapis strony i stanu (globalnie) PhoneApplicationPage. OnNavigatedFrom PhoneApplicationService. Deactivated Framework: Odpięcie zasobów Framework: Zatrzymanie wątków i timerów Uśpiona aplikacja
Activation Resource Management Uruchomiona aplikacja PhoneApplicationPage. OnNavigatedTo MediaElement.Source/Position/Play Socket.ConnectAsync new PhotoCamera/VideoCamera Przywrócenie stanu aplikacji, jeżeli została tombstonowana PhoneApplicationService. Activated Framework: Przypięcie zasobów Framework: Wznowienie wątków i timerów Uśpiona App
Isolated Storage vs State Storage • Nazwa Isolated storage wywodzi się ze sposobu przechowywania danych poprzez izolowanie ich od innych aplikacji • Może być używane jako miejsce do przechowywania plikówi folderów • Dostęp nie jest szybki – technologia NVRAM • Może zostać użyte do przechowywania par – nazwa/wartość, np. ustawienia programu • State storage – ponieważ przechowuje stan aplikacji • Może zostać użyte do przechowywania par – nazwa/wartość – dla przechowywania stanu aplikacji uśpionych i tombsonowanych • Bardzo szybki dostęp do danych
Captain’s Log Bez Storage Ze Storage Pełna obsługa
Podsumowanie • Tylko jedna aplikacja jest aktywna w tym samym czasie • Przyciski Start i Wstecz są używane do przełączania się pomiędzy aplikacjami i uruchamiania nowych aplikacji • Jeżeli ponad aplikacją jest uruchamiana inna, to aplikacja jest uśpiona (stale w pamięci, ale nie działa) lubTombstonowana (usunięta z pamięci) • Aplikacje używają metod klasy App.xaml.csdo zapisywania i przywracania stanu • Stan może być przechowywany w pamięci celem szybkiego powrotu do aplikacji lub w Isolated Storage dla pełnego zapisu danych 31
Działanie w tle BackgroundTasks
Multitasking • Background Agents • Okresowi (Periodic) • Zasobożerne (Resource Intensive) • Transfer danych w tle • Alarmy i przypomnienia • Dźwięk w tle 33
Agenci • Agents • Okresowi • Resource Intensive • Aplikacja może mieć po jednym każdego typu • Inicjalizacja w aplikacji, działanie w tle • Reboot ich nie ruszy • Kontrola poprzez ustawienia telefonu • Maksymalnie 18 agentów okresowych • Agend działa maksymalnie 14 dni • Może być odnawiany
Generic Agent Types Agenci okresowi • Występowanie • Co 30 min • Czas działania • ok. 15 sekund • Ograniczenia • Nie więcej niż6 MB pamięci • Nie więcej niż10% CPU Resource Intensive Agents • Mogą działać, jeżeli… • Zasilanie z sieci • Internet bez GSM • Występowanie • Co 10 min • Ograniczenia • Nie więcej niż6 MB pamięci
Funkcjonalności agentów Dozwolone Zabronione • Kafelki • Toast • Lokalizacja • Sieć • Zapis i odczyt ISO Storage • Sockets • Większość APIframeworków • Wyświetlanie UI • Biblioteki XNA • Mikrofoni aparat • Sensory • Odtwarzanie audio(tylko przez specjalne API)
Debugging Background Tasków • Uciążliwe byłoby czekanie 30 minut na każde wywołanie tasku… • …ale w trybie debugowania można skrócić ten czas • Kompilacja warunkowa ułatwi nam zbudowanie takiego projektu #if DEBUG_AGENT ScheduledActionService.LaunchForTest(taskName, TimeSpan.FromSeconds(60)); #endif
Debugging Agenta • Przy użyciu przycisku Start lub Wstecz podczas działania aplikacji z agentem Visual Studio nie odłączy debuggera • Można ustawiać breakpointy wewnątrz agenta, jak w przypadku zwykłego kodu aplikacji • Debugger zachowuje się identycznie – można wykonywać aplikację linia po linii lub podglądać zawartość zmiennych • Działa to też przy debuggowaniu na urządzeniu • Identyczne działanie dla ResourceIntensiveAgents
File Transfer Tasks • Możliwe jest tworzenie tasków do przekazywania plików z i do Isolated Storage • Transfer plików będzie aktywny także po wyłączeniu aplikacji • Aplikacja może uzyskać dostęp do postępu pobierania/wysyłania pliku • Obsługa HTTP i HTTPs • FTP nie wspierane • System kolejkuje pliki
Zasady transferu w tle • Jest kilka zasad wykorzystywania File Transfer Tasks • Maksymalny rozmiar pliku wysyłanego: 5 MB • Maksymalny rozmiar pliku pobieranego przez GSM: 20 MB • Maksymalny rozmiar pliku pobieranego przez Wi-Fi: 100 MB • Parametry te mogą być modyfikowane poprzez obiektTransferPreferencestworzony dla każdego transferu 42
Scheduled Notifications • Czasowe powiadomienia na telefonie • Wspierają alarmy i przypomnienia • Reboot telefonu nie usuwa ich • Zgodne z UX telefonu
Alarms vs Reminders? Alarmy Przypomnienia • Więcej informacji • Integracja z innymi przypomnieniami • Odłóż i odrzuć • Uruchamiają aplikację • Globalne ustawienia telefonu • Modalne • Odłóż i odrzuć • Własne dźwięki • Brak aplikacji wywołującej • Nie odkładają się na stosie
Tworzenie przypomnienia • Kod tworzy przypomnienie i dodaje je do schedulera telefonu • Wartość eggTime przechowuje czas do wywołania przypomnienia • Ten kod ustawia także stronę aplikacji, którą wyświetli przypomnienie usingMicrosoft.Phone.Scheduler; ... eggReminder =newReminder("Egg Timer"); eggReminder.BeginTime = DateTime.Now + newTimeSpan(0, eggTime, 0); eggReminder.Content = "Egg Ready"; eggReminder.RecurrenceType = RecurrenceInterval.None; eggReminder.NavigationUri = newUri("/EggReadyPage.xaml", UriKind.Relative); ScheduledActionService.Add(eggReminder);
Gospodarowanie przypomnieniami • Przypomnienia są rozpoznawane po nazwie • Ten kod znajduje przypomnienie o nazwie „EggTimer” i usuwa je ze schedulera RemindereggReminder = ScheduledActionService.Find("Egg Timer") asReminder; if ( eggReminder != null ) { ScheduledActionService.Remove("Egg Timer"); }
Audio Playback Agents • Możliwe jest utworzenie Audio Playback Agenta zarządzającego playlistą • Identyczny mechanizm jak przy BackgroundTaskach • Audio może być strumieniowane lub przechowywanie w Isolated Storage
Background Audio • Odtwarzanie • Aplikacja dostarcza URL albo strumień do Zune • Audio jest odtwarzane nawet, gdy aplikacja jest zamknięta • Aplikacja jest informowana o zbliżaniu się końca pliku lub bufora • Integracja z telefonem • Music & Video Hub • Universal Volume Control (UVC), aplikacja uruchomieniowa, kontrolki, contextual info • Uruchomienie kontekstowe – Start menu, UVC, Music & Video Hub • Integracja z aplikacją • Aplikacja może pozyskać status odtwarzania, postęp i metadane • Rejestracja notyfikacji odtwarzania