Building music Caio Garcia Mentor: Robert Davies Faculty: Skelly.
Win401 caio garcez_windows_runtime
-
Upload
caio-chaves-garcez -
Category
Software
-
view
348 -
download
1
Transcript of Win401 caio garcez_windows_runtime
Conhecendo o Windows Runtime
WIN401
Quem é o palestrante?Caio GarcezSenior Technical Evangelist@caio_garcez
Palestra
Desenvolvimento para Windows 10
Desenvolvimento para Windows 10
Windows 10operating system
Windows Bridges
Win32
desktop
Webhosted
JavaAndroid
Obj.CiOS
Universal Windows Platform
WWA
C++& CX
.Netlanguages
HTML/JS
DirectX XAML
C++.Netlanguages
MFCWFWPF
.Netruntime
.Net Core
Universal Windows PlatformOne Windows
Desktop
PC
2 in 1
Mobile
Tablet
Phablet
Phone
Xbox
Xbox
IoT
Band
IoT headless
Raspberry Pi
Home Automation
Surface Hub
Surface Hub
Holographic
HoloLens
• Plataforma unificada de desenvolvimento
• Único Application Package
• Código adaptativo
DesktopMobile
XboxIoT
Holographic Surface Hub
Universal Windows Platform
Core APIs
Universal Windows Platform
Windows Device Family Extension SDKsPara usar APIs específicas de famílias de dispositivos adicione referências aos Windows Device Family Extension SDKs
Código Adaptativo
// StatusBar is Mobile onlyif (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.UI.ViewManagement.StatusBar")) { var ignore = Windows.UI.ViewManagement.StatusBar.GetForCurrentView().HideAsync(); }
Use as APIs Windows.Foundation.Metadata.ApiInformation para escrever código adaptativo em versões diferentes do app para famílias diferentes de dispositivos (ou versões diferentes da UWP)
Demo
Versionamento da UWP
http://windows.Microsoft.com
Platform.XML
Propriedades do ProjetoTarget version (TargetPlatformVersion)
• Define a versão do Universal Windows SDK alvejada pelo projeto
• Define a superfície de API para o app
• É inserida como a propriedade TargetDeviceFamily.MaxVersionTested no manifesto como parte do processo de build
<Dependencies> <TargetDeviceFamily
Name="Windows.Universal" MinVersion="10.0.10240.0"
MaxVersionTested="10.0.10240.0" /></Dependencies>
Min version (TargetPlatformMinVersion)
• Define a versão minima da Universal Windows Platform suportada pelo projeto
• É inserida como a propriedade TargetDeviceFamily.MinVersion no manifesto como parte do processo de build
<Dependencies> <TargetDeviceFamily
Name="Windows.Universal" MinVersion="10.0.10240.0" MaxVersionTested="10.0.10240.0"
/></Dependencies>
Propriedades do Projeto
.NET Native
Código-Fonte
Compilação .NET Clássica
Pré-compilação MSIL JIT Código
nativo
Código-Fonte
.NET Native
VS 2015
Código nativo
.NET NativeCompilação de última geração na nuvem Usado em todos os apps Windows 10Apps usam o otimizador padrão do C++Conforme a performance do otimizador melhora, o .Net native melhora tambémTempo médio de startup 50% menorConsumo de memória 14% menor
Conceitos da UWP
App Container
Sensores
Pastas
Rede
Outros
Demo
Projections
Component Object Model (COM)
ObjetoCOM
IUnknown
AddRefQueryInterfaceRelease
IUnknown
Windows Runtime
Objeto Windows Runtime
IInspectable
:IUnknownGetIidsGetRuntimeClassNameGetTrustLevel
IInspectable
Projections
Object
IInspectable
Windows Metadata
C++ App
Projection
CLR
C#/VB App
ProjectionHTML AppChakra
Projection
Criação de um objetoStart
App pede criação do objeto
Passa o nome para RoActivateInstance
Encontra DLL usando Catalog Carrega DLL
Chama DllGet-ActivationFactory
Objeto criado pelo código de
implementação
IInspectable retornado
Projection cria wrapper (usando
metadata)
Objeto é ligado ao wrapper
Wrapper retornado para App
End
App
Projection
WinRT Object Manager
WinRT Object
Políticas de energia e memória do Windows 10
Controle de memóriaUso de memória (aproximado)
Smartphone 512 MB
Tablet 1 GB Desktop 2 GB
Memória Física (MB) 512 1024 2048
Memória Virtual (Paging) 200 200 1600
Memória Total 712 1224 3648
SO, drivers, serviços 425 425 425
Service Agents (OEM/MO) 22 40 0
VOIP, áudio em background 66 80 80
VPN 10 10 20
Total reservado 523 555 525Memória disponível para apps e
tasks 189 669 3123
App em foreground 185 390 900Apps em backstack, background
tasks 4 279 2223
94% dos appstêm pico <150 MB
92% dos appstêm média <100 MB
Controle de CPU
Tipo de tarefa Limite de memória (MB)
Tempo de vida % CPU Bloqueado em Battery
SaveBackground task default 16 30 seg 10 Sim
Bluetooth de longa duração 16 ∞ 10 Sim
Extended execution 150 10 min 10 Sim
Áudio em background 25 ∞ 10 Não
Chamada VOIP 66 ∞ 70 Não
App moderna em foreground 185 ∞ 70 Não
Exemplo: Dispositivo com 512 MB
Prioridade de Tarefas (Tasks)Tipo de tarefa Prioridade
App em foreground 2VOIP 2Áudio em background 2VPN 2Background Transfer 2 ou 6*Bluetooth 3Task CachedFileUpdater/ShareDataPackage 3 ou 6*
Task Completion 4Task disparada por Geofencing 5Background tasks de fault 6App no backstack 7
Exemplo:dispositivo com 512 MB
(*) Se vinculada à app em foreground
Classe Windows.System.MemoryManagerMemoryManager.AppMemoryUsageIncreased += OnAppMemoryUsageIncreased;MemoryManager.AppMemoryUsageDecreased += OnAppMemoryUsageDecreased;
ulong usageLimit = MemoryManager.AppMemoryUsageLimit;ulong usage = MemoryManager.AppMemoryUsage;ulong headroom = usageLimit - usage;
AppMemoryReport appReport = MemoryManager.GetAppMemoryReport();ulong privateCommit = appReport.PrivateCommitUsage;ulong peakPrivate = appReport.PeakPrivateCommitUsage;ulong totalCommit = appReport.TotalCommitUsage;ulong commitLimit = appReport.TotalCommitLimit;
ProcessMemoryReport processReport = MemoryManager.GetProcessMemoryReport();ulong privateSet = processReport.PrivateWorkingSetUsage;ulong totalSet = processReport.TotalWorkingSetUsage;
Classe Windows.System.Power.BackgroundEnergyManager
BackgroundEnergyManager.RecentEnergyUsageIncreased += OnRecentEnergyUsageIncreased;BackgroundEnergyManager.RecentEnergyUsageReturnedToLow += OnRecentEnergyUsageReturnedToLow;
uint usage = BackgroundEnergyManager.RecentEnergyUsage;
uint usageLevel = BackgroundEnergyManager.RecentEnergyUsageLevel;if (usageLevel == BackgroundEnergyManager.NearTerminationUsageLevel) ;// Prepare-se para ser terminadoelse if (usageLevel == BackgroundEnergyManager.ExcessiveUsageLevel) ;// Diminua o consume urgentementeelse if (usageLevel == BackgroundEnergyManager.MaxAcceptableUsageLevel) ;// Na “Wall of Shame”else if (usageLevel == BackgroundEnergyManager.NearMaxAcceptableUsageLevel) ;// Se aproximando da “Wall of Shame”else if (usageLevel == BackgroundEnergyManager.LowUsageLevel) ;// Bom cidadão
Q&A
Visite o espaço Ask the Experts, próximo dos expositores
Continue sua capacitação
Microsoft Virtual Academy
http://aka.ms/ch9 http://aka.ms/mva
Evento de encerramento do Microsoft Insights Week
com Satya Nadella, CEO da Microsoft.Dia 29 de setembro
AMCHAM - Rua da Paz 1431Chácara Santo Antônio - SP
Para se inscrever: http://aka.ms/satyabr