Home | History | Annotate | Download | only in nougat
      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 &gt;
    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 -&gt; GetJavaVM from &lt;jni.h&gt;
    433 AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
    434 JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
    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 &lt;sys/system_properties.h&gt;
    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> &gt;
    552 <strong>Display</strong> &gt; <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