4. Desenvolvimento para Windows 10
Windows 10
operating system
Windows Bridges
Win32
desktop
Web
hosted
Java
Android
Obj.C
iOS
Universal Windows Platform
WWA
C++
& CX
.Net
languages
HTML/
JS
DirectX XAML
C++.Net
languages
MFC
WFWPF
.Net
runtime
.Net Core
5. Universal Windows Platform
One 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
6. • Plataforma unificada de
desenvolvimento
• Único Application Package
• Código adaptativo
XboxIoT
Universal
Windows Platform
Core APIs
Universal Windows Platform
7. Windows Device Family Extension SDKs
Para usar APIs específicas de
famílias de dispositivos adicione
referências aos Windows Device
Family Extension SDKs
8. Código Adaptativo
// StatusBar is Mobile only
if (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)
12. Propriedades do Projeto
Target 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>
13. 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
25. Criação de um objeto
Start
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
27. Controle de memória
Uso 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 525
Memória disponível para apps e tasks 189 669 3123
App em foreground 185 390 900
Apps em backstack, background tasks 4 279 2223
28. Controle de CPU
Tipo de tarefa Limite de memória (MB)
Tempo de
vida
% CPU Bloqueado em Battery Save
Background 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
29. Prioridade de Tarefas (Tasks)
Tipo de tarefa Prioridade
App em foreground 2
VOIP 2
Áudio em background 2
VPN 2
Background Transfer 2 ou 6*
Bluetooth 3
Task CachedFileUpdater/ShareDataPackage 3 ou 6*
Task Completion 4
Task disparada por Geofencing 5
Background tasks de fault 6
App no backstack 7
31. 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 terminado
else if (usageLevel == BackgroundEnergyManager.ExcessiveUsageLevel)
;// Diminua o consume urgentemente
else 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
34. Evento de encerramento do Microsoft Insights Week
com Satya Nadella, CEO da Microsoft.
Dia 29 de setembro
AMCHAM - Rua da Paz 1431
Chácara Santo Antônio - SP
Para se inscrever: http://aka.ms/satyabr