1 page.title=Mudanas de comportamento 2 page.keywords=preview,sdk,compatibility 3 meta.tags="preview", "compatibility" 4 page.tags="preview", "developer preview" 5 page.image=images/cards/card-n-changes_2x.png 6 @jd:body 7 8 9 <div id="tb-wrapper"> 10 <div id="tb"> 11 12 <h2>Neste documento</h2> 13 14 <ol> 15 <li><a href="#perf">Melhorias no desempenho</a> 16 <ol> 17 <li><a href="#doze">Soneca</a></li> 18 <li><a href="#bg-opt">Otimizaes em segundo plano</a></li> 19 </ol> 20 </li> 21 <li><a href="#perm">Alteraes nas permisses</a> 22 </li> 23 <li><a href="#sharing-files">Compartilhamento de arquivos entre aplicativos</a></li> 24 <li><a href="#accessibility">Melhorias na acessibilidade</a> 25 <ol> 26 <li><a href="#screen-zoom">Zoom de tela</a></li> 27 <li><a href="#vision-settings">Configuraes de viso no assistente de configurao</a></li> 28 </ol> 29 </li> 30 <li><a href="#ndk">Aplicativos NDK vinculados a bibliotecas de plataforma</a></li> 31 <li><a href="#afw">Android for Work</a></li> 32 <li><a href="#annotations">Reteno de anotaes</a></li> 33 <li><a href="#other">Outros pontos importantes</a></li> 34 </ol> 35 36 <h2>Veja tambm</h2> 37 <ol> 38 <li><a href="{@docRoot}preview/api-overview.html"> 39 Viso geral da API do Android N</a></li> 40 </ol> 41 42 </div> 43 </div> 44 45 46 <p> 47 Junto com novos recursos e funcionalidades, o Android N 48 inclui uma variedade de mudanas de comportamento do sistema e da API. Este documento 49 destaca algumas das principais mudanas que voc deve entender e considerar 50 nos aplicativos. 51 </p> 52 53 <p> 54 Caso tenha publicado anteriormente um aplicativo para Android, saiba que ele pode ser afetado 55 pelas alteraes na plataforma. 56 </p> 57 58 59 <h2 id="perf">Bateria e memria</h2> 60 61 <p> 62 O Android N inclui alteraes de comportamento do sistema com o objetivo de melhorar a vida til da bateria 63 nos dispositivos e reduzir o uso de RAM. Essas alteraes podem afetar o acesso do aplicativo aos 64 recursos do sistema, bem como a forma como ele interage com outros aplicativos por meio de 65 certas intenes explcitas . 66 </p> 67 68 <h3 id="doze">Soneca</h3> 69 70 <p> 71 Introduzido no Android 6.0 (nvel da API 23), o modo soneca aumenta a vida til da bateria 72 adiando atividades de CPU e rede quando um usurio deixa um dispositivo desconectado, 73 estacionrio e com a tela desativada. O Android N aprimora 74 ainda mais o modo soneca aplicando um subconjunto de restries de CPU e rede 75 quando o dispositivo est desconectado e com a tela desativada, mas no necessariamente 76 estacionrio, como, por exemplo, quando o celular est no bolso do usurio. 77 </p> 78 79 80 <img src="{@docRoot}images/android-7.0/doze-diagram-1.png" alt="" height="251px" id="figure1" /> 81 <p class="img-caption"> 82 <strong>Figura 1.</strong> Ilustrao de como o modo soneca aplica um primeiro nvel de 83 restries de atividades de sistema para aumentar a vida til da bateria. 84 </p> 85 86 <p> 87 Quando o dispositivo estiver sendo alimentado pela bateria e a tela estiver desativada por um determinado 88 perodo, o dispositivo entrar no modo de soneca e aplicar o primeiro subconjunto de restries: o 89 acesso do aplicativo rede ser desativado e os trabalhos e sincronizaes sero adiados. Se o dispositivo permanecer 90 estacionrio por um determinado perodo aps entrar no modo soneca, o sistema aplicar 91 as demais restries de soneca a {@link android.os.PowerManager.WakeLock}, aos alarmes 92 {@link android.app.AlarmManager} e s verificaes de GPS e Wi-Fi. Independentemente 93 de as restries de soneca serem aplicadas parcial ou totalmente, o sistema despertar o 94 dispositivo para breves janelas de manuteno, quando os aplicativos 95 podero acessar a rede e executar todos os trabalhos/sincronizaes adiados. 96 </p> 97 98 99 <img src="{@docRoot}images/android-7.0/doze-diagram-2.png" alt="" id="figure2" /> 100 <p class="img-caption"> 101 <strong>Figura 2.</strong> Ilustrao de como o modo soneca aplica um segundo nvel de 102 restries de atividades de sistema aps o dispositivo permanecer estacionrio por um determinado perodo. 103 </p> 104 105 <p> 106 Note que a ativao da tela ou do dispositivo encerra o modo soneca e 107 remove essas restries de processamento. O comportamento adicional no 108 afeta as recomendaes e prticas recomendadas para a adaptao do aplicativo verso 109 anterior do modo soneca, introduzida no Android 6.0 (nvel da API 23), como discutido em 110 <a href="{@docRoot}training/monitoring-device-state/doze-standby.html"> 111 Otimizao para soneca e aplicativo em espera</a>. Voc deve continuar 112 a seguir essas recomendaes, como o uso do Google Cloud Messaging (GCM) para 113 enviar e receber mensagens, e comear a planejar atualizaes para acomodar o 114 comportamento adicional do modo soneca. 115 </p> 116 117 118 <h3 id="bg-opt">Project Svelte: Otimizaes em segundo plano</h3> 119 120 <p> 121 O Android N remove trs transmisses implcitas para ajudar a otimizar o 122 uso de memria e o consumo de energia. Essa alterao necessria porque transmisses 123 implcitas iniciam frequentemente em segundo plano aplicativos 124 registrados para escut-las. A remoo dessas transmisses pode beneficiar consideravelmente o desempenho 125 do dispositivo e a experincia do usurio. 126 </p> 127 128 <p> 129 Dispositivos mveis passam por alteraes frequentes na conectividade, como a alternncia 130 entre Wi-Fi e dados mveis. No momento, os aplicativos podem monitorar alteraes de 131 conectividade registrando um receptor para a transmisso implcita {@link 132 android.net.ConnectivityManager#CONNECTIVITY_ACTION} em seu 133 manifesto. Como vrios aplicativos se registram para receber essa transmisso, uma nica 134 mudana de rede pode fazer com que todos despertem e processem a transmisso 135 ao mesmo tempo. 136 </p> 137 138 <p> 139 De forma semelhante, em verses anteriores do Android, os aplicativos podiam se registrar para receber transmisses implcitas {@link 140 android.hardware.Camera#ACTION_NEW_PICTURE} e {@link 141 android.hardware.Camera#ACTION_NEW_VIDEO} de outros aplicativos, como 142 Cmera. Quando um usurio tira uma fotografia com o aplicativo Cmera, esses aplicativos so despertados 143 para processar a transmisso. 144 </p> 145 146 <p> 147 Para aliviar esses problemas, o Android N aplica a seguintes 148 otimizaes: 149 </p> 150 151 <ul> 152 <li>Os aplicativos direcionados ao Android N no recebero transmisses {@link 153 android.net.ConnectivityManager#CONNECTIVITY_ACTION}, mesmo 154 se tiverem entradas no manifesto solicitando notificao desses eventos. Os aplicativos em execuo 155 ainda podero escutar {@code CONNECTIVITY_CHANGE} no encadeamento principal 156 se solicitarem a notificao com {@link android.content.BroadcastReceiver}. 157 </li> 158 159 <li>Os aplicativos no podem enviar nem receber transmisses {@link 160 android.hardware.Camera#ACTION_NEW_PICTURE} ou {@link 161 android.hardware.Camera#ACTION_NEW_VIDEO}. Essa otimizao 162 afeta todos os aplicativos e no apenas os direcionados ao Android N. 163 </li> 164 </ul> 165 166 <p>Se o seu aplicativo usar qualquer uma dessas intenes, remova as dependncias 167 delas assim que possvel para direcionar corretamente os dispositivos Android N. 168 A estrutura do Android oferece diversas solues para reduzir a necessidade dessas 169 transmisses implcitas. Por exemplo, a API {@link 170 android.app.job.JobScheduler} oferece um mecanismo robusto para agendar 171 operaes de rede quando ocorrem condies especificadas, como conexo a uma 172 rede ilimitada. Voc pode at usar {@link 173 android.app.job.JobScheduler} para reagir a mudanas em provedores de contedo. 174 </p> 175 176 <p> 177 Para obter mais informaes sobre otimizaes em segundo plano no N e como adaptar seu aplicativo, 178 consulte <a href="{@docRoot}preview/features/background-optimization.html">Otimizaes 179 em segundo plano</a>. 180 </p> 181 182 <h2 id="perm">Alteraes nas permisses</h2> 183 184 <p> 185 O Android N inclui alteraes em permisses que podem afetar seu aplicativo. 186 </p> 187 188 <h3 id="permfilesys">Alteraes nas permisses do sistema de arquivos</h3> 189 190 <p> 191 Para aprimorar a segurana de arquivos privados, o diretrio privado de 192 aplicativos direcionados ao Android N ou superior tem acesso restrito (<code>0700</code>). 193 Esta configurao impede o vazamento de metadados de arquivos privados, como tamanho 194 e existncia. Esta alterao de permisso tem vrios efeitos colaterais: 195 </p> 196 197 <ul> 198 <li> 199 O proprietrio no deve mais relaxar as permisses para arquivos privados, 200 e qualquer tentativa de fazer isso usando 201 {@link android.content.Context#MODE_WORLD_READABLE} e/ou 202 {@link android.content.Context#MODE_WORLD_WRITEABLE} acionar uma 203 {@link java.lang.SecurityException}. 204 <p class="note"> 205 <strong>Observao:</strong> At agora, essa restrio no foi adotada em pleno vigor. 206 Aplicativos ainda podem modificar permisses para o diretrio privado usando 207 APIs nativas ou a API {@link java.io.File File}. No entanto, o relaxamento 208 de permisses para o diretrio privado enfaticamente desencorajado. 209 </p> 210 </li> 211 <li> 212 A passagem de URIs <code>file://</code> para fora do domnio do pacote pode deixar o 213 receptor com um caminho inacessvel. Sendo assim, tentativas de passar um URI 214 <code>file://</code> acionam uma 215 <code>FileUriExposedException</code>. A forma recomendada para compartilhamento do 216 contedo de um arquivo privado o uso do {@link 217 android.support.v4.content.FileProvider}. 218 </li> 219 <li> 220 O {@link android.app.DownloadManager} no consegue mais compartilhar 221 arquivos armazenados de forma privada por nome de arquivo. Os aplicativos de legado podem acabar em um 222 caminho inacessvel quando acessam {@link 223 android.app.DownloadManager#COLUMN_LOCAL_FILENAME}. Aplicativos direcionados para o 224 Android N ou superior acionam uma {@link java.lang.SecurityException} quando 225 tentam acessar 226 {@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}. 227 Aplicativos de legado que definem o local de download para um local pblico 228 usando 229 {@link 230 android.app.DownloadManager.Request#setDestinationInExternalFilesDir 231 DownloadManager.Request.setDestinationInExternalFilesDir()} ou 232 {@link 233 android.app.DownloadManager.Request#setDestinationInExternalPublicDir 234 DownloadManager.Request.setDestinationInExternalPublicDir()} 235 ainda conseguem acessar o caminho em 236 {@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}, no entanto, este 237 mtodo enfaticamente desencorajado. A forma preferencial para se acessar um arquivo 238 exposto pelo {@link android.app.DownloadManager} o uso do 239 {@link android.content.ContentResolver#openFileDescriptor 240 ContentResolver.openFileDescriptor()}. 241 </li> 242 </ul> 243 244 <h2 id="sharing-files">Compartilhamento de arquivos entre aplicativos</h2> 245 246 <p> 247 Para aplicativos direcionados ao Android N, a estrutura do Android cumpre com 248 a poltica de API {@link android.os.StrictMode} que probe a exposio de URIs {@code file://} 249 fora do aplicativo. Se uma inteno que contenha o URI de um arquivo deixar o aplicativo, ele falhar 250 com uma exceo {@code FileUriExposedException}. 251 </p> 252 253 <p> 254 Para compartilhar arquivos entre aplicativos, voc deve enviar um URI {@code content://} 255 e conceder uma permisso de acesso temporria ao URI. A forma mais fcil de conceder essa permisso 256 usar a classe {@link android.support.v4.content.FileProvider}. Para obter mais informaes 257 sobre permisses e compartilhamento de arquivos, 258 consulte <a href="{@docRoot}training/secure-file-sharing/index.html">Compartilhamento de Arquivos</a>. 259 </p> 260 261 <h2 id="accessibility">Melhorias na acessibilidade</h2> 262 263 <p> 264 O Android N inclui mudanas criadas para aprimorar a facilidade de uso da 265 plataforma para usurios com viso reduzida ou deficiente. Normalmente, essas mudanas 266 no exigiro alteraes de cdigo no aplicativo. No entanto, analise 267 esse recurso e teste-o em seu aplicativo para avaliar possveis impactos na experincia 268 do usurio. 269 </p> 270 271 272 <h3 id="screen-zoom">Zoom de tela</h3> 273 274 <p> 275 O Android N permite que os usurios definam <strong>Display size</strong>, que amplia 276 ou reduz todos os elementos na tela, melhorando a acessibilidade do dispositivo 277 para usurios com viso deficiente. Os usurios no podem alterar o zoom da tela alm da largura mnima de 278 tela de <a href="http://developer.android.com/guide/topics/resources/providing-resources.html"> 279 sw320dp</a>, que a largura do Nexus 4, um telefone comum de tamanho mdio. 280 </p> 281 282 <div class="cols"> 283 284 <div class="col-6"> 285 <img src="{@docRoot}images/android-7.0/screen-zoom-1.png" alt="" height="XXX" id="figure1" /> 286 </div> 287 <div class="col-6"> 288 <img src="{@docRoot}images/android-7.0/screen-zoom-2.png" alt="" height="XXX" id="figure1" /> 289 </div> 290 291 </div> <!-- end cols --> 292 <p class="img-caption"> 293 <strong>Figura 3.</strong> A tela direita mostra o efeito de 294 reduzir o Display size de um dispositivo executando uma imagem do sistema Android N. 295 </p> 296 297 298 <p> 299 Quando a densidade do dispositivo mudar, o sistema notificar os aplicativos em execuo das 300 seguintes formas: 301 </p> 302 303 <ul> 304 <li>Se um aplicativo est direcionado ao nvel da API 23 ou mais baixo, o sistema automaticamente elimina 305 todos os processos em segundo plano. Isso significa que, se um usurio sair 306 desse aplicativo para abrir a tela <em>Settings</em> e alterar a 307 configurao <strong>Display size</strong>, o sistema eliminar o aplicativo da mesma 308 forma que faria em uma situao de pouca memria. Se o aplicativo tiver processos 309 em primeiro plano, o sistema notificar esses processos sobre a mudana de configurao, como 310 descrito em <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Processamento 311 de alteraes no tempo de execuo</a>, como se a orientao do dispositivo tivesse mudado. 312 </li> 313 314 <li>Se um aplicativo for direcionado ao Android N, todos os seus processos 315 (em primeiro e segundo plano) sero notificados da mudana de configurao, como 316 descrito em <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Processamento 317 de alteraes no tempo de execuo</a>. 318 </li> 319 </ul> 320 321 <p> 322 A maioria dos aplicativos no precisa ser alterada para ser compatvel com esse recurso, desde que 323 os aplicativos sigam as prticas recomendadas do Android. Os itens especficos a serem verificados so: 324 </p> 325 326 <ul> 327 <li>Teste o aplicativo em um dispositivo com largura de tela <code><a href= 328 "{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code> 329 e verifique se ele funciona adequadamente. 330 </li> 331 332 <li>Quando a configurao do dispositivo mudar, atualize todas as informaes 333 dependentes de densidade armazenadas no cache, como bitmaps no cache ou recursos carregados da 334 rede. Verifique a ocorrncia de alteraes de configurao quando o aplicativo sair do estado pausado e retomar 335 a execuo. 336 <p class="note"> 337 <strong>Observao:</strong> se voc armazenar em cache dados dependentes de configurao, 338 recomendamos incluir metadados relevantes, como o tamanho de tela 339 adequado ou a densidade de pixels desses dados. Salvar esses dados permitir que voc 340 decida se ser necessrio atualizar os dados armazenados em cache aps uma mudana 341 de configurao. 342 </p> 343 </li> 344 345 <li>Evite especificar dimenses com unidades px, pois elas no so redimensionadas de 346 acordo com a densidade de tela. Em vez disso, especifique dimenses com unidades de <a href="{@docRoot}guide/practices/screens_support.html">pixel independente de 347 densidade</a> (<code>dp</code>). 348 </li> 349 </ul> 350 351 <h3 id="vision-settings">Configuraes de viso no assistente de configurao</h3> 352 353 <p> 354 Agora, o Android N inclui Configuraes de viso na tela de boas-vindas, onde os usurios podem 355 definir as configuraes de acessibilidade a seguir em um novo dispositivo: 356 <strong>gesto de ampliao</strong>, <strong>tamanho da fonte</strong> 357 , <strong>tamanho da tela</strong> e <strong>TalkBack</strong>. Essa alterao 358 aumenta a visibilidade de erros relacionados a configuraes de tela diferentes. Para 359 avaliar o impacto do recurso, teste seus aplicativos com essas 360 configuraes ativadas. As configuraes podem ser encontradas em <strong>Settings > 361 Accessibility</strong>. 362 </p> 363 364 <h2 id="ndk">Aplicativos NDK vinculados a bibliotecas de plataforma</h2> 365 366 <p> 367 O Android N inclui mudanas no namespace para evitar o carregamento de APIs no pblicas. 368 Se voc usar o NDK, use apenas APIs pblicas da plataforma 369 Android. O uso de APIs no pblicas na prxima verso oficial do Android 370 poder causar problemas no seu aplicativo. 371 </p> 372 373 <p> 374 Para alertar sobre o uso de APIs no pblicas, os aplicativos executados em um dispositivo 375 Android N geram um erro na sada logcat quando um aplicativo chama uma API no pblica. 376 Esse erro tambm exibido na tela do dispositivo como mensagem para que o usurio 377 fique ciente da situao. Revise o cdigo do seu aplicativo para 378 remover o uso de APIs de plataformas no pblicas e faa testes completos do aplicativo usando 379 um dispositivo de visualizao ou um emulador. 380 </p> 381 382 <p> 383 Se o seu aplicativo depender de bibliotecas de plataforma, consulte a documentao do NDK 384 para obter solues usuais de substituio de APIs privadas comuns por APIs pblicas equivalentes. 385 Tambm possvel que voc esteja vinculando bibliotecas de plataforma sem perceber, 386 particularmente se o aplicativo usar uma biblioteca que faz parte da plataforma (como 387 <code>libpng</code>), mas no faz parte do NDK. Nesse caso, verifique se 388 o APK contm todos os arquivos .so que voc pretende vincular. 389 </p> 390 391 <p class="caution"> 392 <strong>Cuidado:</strong> Algumas bibliotecas de terceiros tambm podem conter links para APIs 393 no pblicas. Se o aplicativo usar essas bibliotecas, poder falhar quando executado 394 na prxima verso oficial do Android. 395 </p> 396 397 <p> 398 Os aplicativos no devem depender de nem usar bibliotecas nativas no includas 399 no NDK, pois elas podem ser alteradas ou removidas entre uma verso do Android 400 e outra. A mudana de OpenSSL para BoringSSL um exemplo dessas alteraes. 401 Alm disso, dispositivos diferentes podem oferecer nveis distintos de compatibilidade, pois 402 no h requisitos de compatibilidade para bibliotecas de plataforma no includas 403 no NDK. Se voc precisar acessar bibliotecas que no so do NDK em dispositivos mais antigos, torne o carregamento 404 dependente do nvel da Android API. 405 </p> 406 407 <p> 408 Para ajudar a diagnosticar esses tipos de problemas, veja a seguir alguns exemplos de erros 409 de Java e NDK que podem ocorrer durante a compilao do aplicativo com o Android N: 410 </p> 411 412 <p>Exemplo de erro de Java:</p> 413 <pre class="no-pretty-print"> 414 java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so" 415 is not accessible for the namespace "classloader-namespace" 416 </pre> 417 418 <p>Exemplo de erro de NDK:</p> 419 <pre class="no-pretty-print"> 420 dlopen failed: cannot locate symbol "__system_property_get" referenced by ... 421 </pre> 422 423 424 <p> 425 Veja a seguir algumas correes comuns para aplicativos que encontram esses tipos de erro: 426 </p> 427 428 <ul> 429 <li>O uso de getJavaVM e getJNIEnv do libandroid_runtime.so pode ser substitudo 430 por funes JNI padro: 431 <pre class="no-pretty-print"> 432 AndroidRuntime::getJavaVM -> GetJavaVM from <jni.h> 433 AndroidRuntime::getJNIEnv -> JavaVM::GetEnv or 434 JavaVM::AttachCurrentThread from <jni.h>. 435 </pre> 436 </li> 437 438 <li>O uso do smbolo {@code property_get} de {@code libcutils.so} pode ser 439 substitudo pelo {@code alternative __system_property_get} pblico. 440 Para fazer isso, use {@code __system_property_get} com o include abaixo: 441 <pre> 442 #include <sys/system_properties.h> 443 </pre> 444 </li> 445 446 <li>O uso do smbolo {@code SSL_ctrl} de {@code libcrypto.so} deve ser 447 substitudo por uma verso local do aplicativo. Por exemplo, vincule estaticamente 448 {@code libcyrpto.a} no arquivo {@code .so} ou inclua dinamicamente o seu prprio 449 {@code libcrypto.so} do BoringSSL ou OpenSSL no aplicativo. 450 </li> 451 </ul> 452 453 <h2 id="afw">Android for Work</h2> 454 <p> 455 O Android N contm mudanas para aplicativos direcionados ao Android for Work, incluindo 456 mudanas em instalao de certificados, redefinio de senha, gerenciamento de 457 usurios secundrios e acesso a identificadores de dispositivos. Se voc estiver criando aplicativos para 458 ambientes do Android for Work, examine essas mudanas e modifique 459 o aplicativo conforme necessrio. 460 </p> 461 462 <ul> 463 <li>Voc precisa instalar um instalador de certificado delegado antes que o DPC possa 464 configur-lo. Para aplicativos de donos de perfil e dispositivo direcionados ao N SDK, voc deve 465 instalar o instalador de certificado delegado antes de chamar o 466 controlador de polticas de dispositivo (DPC) 467 <code>DevicePolicyManager.setCertInstallerPackage()</code>. Se o instalador 468 no estiver instalado, o sistema gerar uma 469 <code>IllegalArgumentException</code>. 470 </li> 471 472 <li>As restries de redefinio de senha de administradores do dispositivo agora se aplicam tambm a 473 donos de perfil. Os administradores de dispositivo no podem mais usar 474 {@code DevicePolicyManager.resetPassword()} para limpar senhas nem para alterar 475 as j definidas. Os administradores de dispositivo ainda podero definir uma senha, mas apenas 476 em dispositivos sem senha, PIN nem padro. 477 </li> 478 479 <li>Donos de dispositivo e perfil podero gerenciar contas, mesmo se restries forem 480 definidas. Eles podem chamar as APIs de gerenciamento de contas, 481 mesmo se restries de usurio <code>DISALLOW_MODIFY_ACCOUNTS</code> forem implementadas. 482 </li> 483 484 <li>Os donos de dispositivo podem gerenciar usurios secundrios com maior facilidade. Quando um dispositivo 485 executar no modo de dono do dispositivo, a restrio <code>DISALLOW_ADD_USER</code> 486 ser definida automaticamente. Isso evita que os usurios criem usurios secundrios 487 no gerenciados. Alm disso, os mtodos <code>CreateUser()</code> e 488 <code>createAndInitializeUser()</code> ficaram obsoletos e foram substitudos 489 pelo novo mtodo <code>DevicePolicyManager.createAndManageUser()</code>. 490 </li> 491 492 <li>Os donos de dispositivo podem acessar identificadores de dispositivo. O dono do dispositivo pode acessar o 493 endereo MAC Wi-Fi de um dispositivo usando 494 <code>DevicePolicyManagewr.getWifiMacAddress()</code>. Se a rede Wi-Fi nunca 495 foi ativada no dispositivo, esse mtodo retorna o valor {@code null}. 496 </li> 497 498 <li>A configurao modo de trabalho controla o acesso a aplicativos de trabalho. Quando o modo de trabalho est desativado, a 499 tela de incio do sistema mostra os aplicativos de trabalho em cinza para indicar que esto indisponveis. Quando 500 reativado, o modo de trabalho retorna ao comportamento normal. 501 </ul> 502 503 <p> 504 Para obter mais informaes sobre as mudanas no Android for Work no Android N, consulte 505 <a href="{@docRoot}preview/features/afw.html">Atualizaes no Android for Work</a>. 506 </p> 507 508 <h2 id="annotations">Reteno de anotaes</h2> 509 510 <p> 511 O Android N corrige um erro em que a visibilidade de anotaes era ignorada. 512 Este problema permitia que o tempo de execuo acessasse anotaes a que no deveria 513 ter acesso. Entre essas anotaes, esto: 514 </p> 515 516 <ul> 517 <li>{@code VISIBILITY_BUILD}: que s deveria estar visvel em tempo de compilao.</li> 518 <li>{@code VISIBILITY_SYSTEM}: que deveria estar visvel em tempo de execuo, mas apenas para o 519 sistema subjacente.</li> 520 </ul> 521 522 <p> 523 Se o seu aplicativo se baseou neste comportamento, adicione uma poltica de reteno para anotaes que deve 524 estar disponvel em tempo de execuo. possvel fazer isso usando {@code @Retention(RetentionPolicy.RUNTIME)}. 525 </p> 526 527 <h2 id="other">Outros pontos importantes</h2> 528 529 <ul> 530 <li>Quando um aplicativo for executado no Android N, mas for direcionado a um nvel da API menor 531 e o usurio alterar o tamanho da tela, o processo do aplicativo ser eliminado. O aplicativo 532 dever ser capaz de processar corretamente esse cenrio. Caso contrrio, ele falhar 533 quando o usurio restaur-lo usando Recents. 534 535 <p> 536 Voc deve testar o aplicativo para verificar 537 se esse comportamento no ocorre. 538 Isso pode ser feito causando uma falha idntica 539 eliminando o aplicativo manualmente usando o DDMS. 540 </p> 541 542 <p> 543 Aplicativos direcionados ao Android N e verses posteriores no sero eliminados automaticamente em mudanas de densidade. 544 No entanto, podem continuar a responder a alteraes de configuraes de forma no ideal. 545 </p> 546 </li> 547 548 <li> 549 Os aplicativos no Android N devem ser capazes de processar corretamente mudanas de configurao 550 e no devem falhar em inicializaes subsequentes. Voc pode verificar o comportamento do aplicativo 551 alterando o tamanho da fonte (<strong>Setting</strong> > 552 <strong>Display</strong> > <strong>Font size</strong>) e depois restaurando 553 o aplicativo em Recents. 554 </li> 555 556 <li> 557 Devido a um erro em verses anteriores do Android, o sistema no sinaliza gravaes 558 em um soquete TCP no encadeamento principal como violaes do modo estrito. O Android N corrigiu esse erro. 559 Agora, os aplicativos que exibirem este comportamento geraro uma{@code android.os.NetworkOnMainThreadException}. 560 Geralmente, a realizao de operaes de rede no encadeamento principal uma m ideia porque essas operaes 561 geralmente tm alta latncia no final, causando ANRs e problemas. 562 </li> 563 564 <li> 565 Agora, por padro, a famlia de mtodos {@code Debug.startMethodTracing()} armazena 566 os resultados no diretrio especfico do pacote no armazenamento compartilhado, 567 e no no nvel mais alto 568 do carto SD. Isso significa que os aplicativos no precisam mais solicitar a permisso {@code WRITE_EXTERNAL_STORAGE} para usar estas APIs. 569 </li> 570 571 <li> 572 Muitas APIs de plataformas comearam a verificar grandes cargas teis enviadas 573 por meio de transaes {@link android.os.Binder}, e o 574 sistema agora gera novamente{@code TransactionTooLargeExceptions} 575 como {@code RuntimeExceptions}, em vez de registr-las ou suprimi-las silenciosamente. Um 576 exemplo comum armazenar dados demais em 577 {@link android.app.Activity#onSaveInstanceState Activity.onSaveInstanceState()}, 578 que faz com que {@code ActivityThread.StopInfo} gere uma 579 {@code RuntimeException} quando seu aplicativo direcionado ao Android N. 580 </li> 581 582 <li> 583 Se um aplicativo publica tarefas {@link java.lang.Runnable} para uma {@link android.view.View} e 584 esta {@link android.view.View} 585 no est anexada a uma janela, o sistema 586 coloca a tarefa {@link java.lang.Runnable} em fila com a {@link android.view.View}. 587 A tarefa {@link java.lang.Runnable} no executada at que a 588 {@link android.view.View} esteja anexada 589 a uma janela. Este comportamento corrige os seguintes erros: 590 <ul> 591 <li>Se um aplicativo publicasse em uma {@link android.view.View} de um encadeamento que no fosse o encadeamento de IU da janela pretendida 592 , o {@link java.lang.Runnable} poderia acabar sendo executado no encadeamento errado. 593 </li> 594 <li>Se a tarefa {@link java.lang.Runnable} fosse publicada de um encadeamento que no fosse 595 um encadeamento de looper, o aplicativo poderia expor a tarefa {@link java.lang.Runnable}.</li> 596 </ul> 597 </li> 598 599 <li> 600 Se um aplicativo no Android N com permisso 601 {@link android.Manifest.permission#DELETE_PACKAGES DELETE_PACKAGES} 602 tentar excluir um pacote instalado por outro aplicativo, 603 o sistema solicitar a confirmao do usurio. Nesse cenrio, os aplicativos devem esperar 604 {@link android.content.pm.PackageInstaller#STATUS_PENDING_USER_ACTION STATUS_PENDING_USER_ACTION} 605 como status de retorno ao invocar 606 {@link android.content.pm.PackageInstaller#uninstall PackageInstaller.uninstall()}. 607 </li> 608 609 </ul> 610 611