Home | History | Annotate | Download | only in activity-lifecycle
      1 page.title=Pausando e reiniciando uma atividade
      2 page.tags=ciclo de vida da atividade
      3 helpoutsWidget=true
      4 
      5 trainingnavtop=true
      6 
      7 @jd:body
      8 
      9 <div id="tb-wrapper">
     10   <div id="tb">
     11     
     12     <h2>Esta lio ensina a</h2>
     13     <ol>
     14       <li><a href="#Pause">Pausar sua atividade</a></li>
     15       <li><a href="#Resume">Reiniciar sua atividade</a></li>
     16     </ol>
     17     
     18     <h2>Leia tambm</h2>
     19     <ul>
     20       <li><a href="{@docRoot}guide/components/activities.html">Atividades</a>
     21       </li>
     22     </ul>
     23 
     24 <h2>Tente</h2>
     25 
     26 <div class="download-box">
     27  <a href="http://developer.android.com/shareables/training/ActivityLifecycle.zip" class="button">Baixar a demonstrao</a>
     28  <p class="filename">ActivityLifecycle.zip</p>
     29 </div>
     30 
     31   </div>
     32 </div>
     33 
     34 <p>Durante o uso normal do aplicativo, a atividade em primeiro plano as vezes  obstruda por outros 
     35 componentes visuais que causam a <em>pausa</em>.  Por exemplo, quando uma atividade
     36  semitransparente  aberta (como uma no estilo de um dilogo), a atividade anterior pausa. Enquanto a 
     37 atividade estiver parcialmente visvel, mas no for o foco da atividade, ela permanecer pausada.</p>
     38 
     39 <p>No entanto, se a atividade estiver completamente obstruda e no visvel, ela <em>para</em> (o que ser 
     40 discutido na prxima lio).</p>
     41 
     42 <p>Conforme a atividade entra no estado pausado, o sistema chama o mtodo {@link
     43 android.app.Activity#onPause onPause()} em seu {@link android.app.Activity}, que permite
     44 interromper aes em andamento que no devem continuar enquanto pausadas (como um vdeo) nem persistir
     45 quaisquer informaes que devam ser permanentemente salvas caso o usurio continue a sair do aplicativo. Se
     46 o usurio retornar  atividade do estado de pausa, o sistema a reiniciar e chamar o mtodo
     47 {@link android.app.Activity#onResume onResume()}.</p>
     48 
     49 <p class="note"><strong>Observao:</strong> quando a atividade receber o chamado para {@link
     50 android.app.Activity#onPause()}, pode ser um indicativo de que a atividade ser pausada por um
     51 momento e o usurio poder retornar o foco para a atividade. No entanto, geralmente  um indicativo
     52 de que o usurio est saindo da atividade.</p>
     53 
     54 <img src="{@docRoot}images/training/basics/basic-lifecycle-paused.png" />
     55 <p class="img-caption"><strong>Figura 1.</strong> Quando uma atividade semitransparente obscurece
     56 sua atividade, o sistema chama {@link android.app.Activity#onPause onPause()} e a atividade
     57 aguarda no estado Pausa (1). Se o usurio retornar  atividade enquanto ainda estiver pausada, o
     58  sistema chama {@link android.app.Activity#onResume onResume()} (2).</p>
     59 
     60 
     61 <h2 id="Pause">Pausar sua atividade</h2>
     62       
     63 <p>Quando o sistema chama {@link android.app.Activity#onPause()} para sua atividade, teoricamente
     64 significa que a atividade ainda est parcialmente visvel, mas geralmente  um indcio
     65 de que o usurio est saindo da atividade e logo entrar em estado Interrompido.  Use
     66 o retorno de chamada {@link android.app.Activity#onPause()} para:</p>
     67 
     68 <ul>
     69   <li>Interromper animaes ou outras aes em andamento que consomem a CPU.</li>
     70   <li>Consolidar alteraes no salvas apenas se o usurio esperar que essas alteraes sejam permanentemente salvas ao
     71 sarem (como um rascunho de email).</li>
     72   <li>Liberar recursos do sistema, como receptores, cabos para sensores (como
     73 GPS), ou outros recursos que podem afetar a vida da bateria enquanto a atividade estiver pausada e o usurio
     74 no precisar deles.</li>
     75 </ul>
     76 
     77 <p>Por exemplo, se seu aplicativo utiliza o {@link android.hardware.Camera}, o mtodo
     78 {@link android.app.Activity#onPause()}  um bom local para liber-los.</p>
     79 
     80 <pre>
     81 &#64;Override
     82 public void onPause() {
     83     super.onPause();  // Always call the superclass method first
     84 
     85     // Release the Camera because we don't need it when paused
     86     // and other activities might need to use it.
     87     if (mCamera != null) {
     88         mCamera.release()
     89         mCamera = null;
     90     }
     91 }
     92 </pre>
     93 
     94 <p>Geralmente, recomenda-se <strong>no</strong> utilizar {@link android.app.Activity#onPause()} para armazenar
     95 alteraes do usurio (como informaes pessoais digitadas em um formulrio) para armazenamento permanente. O nico momento
     96 que se deve persistir na mudana do usurio para armazenamento permanente dentro do {@link android.app.Activity#onPause()}
     97  quando tem certeza de que o usurio espera que as alteraes sejam salvas automaticamente (como ao esboar um email).
     98 No entanto, evite executar trabalhos de uso intensivo da CPU durante {@link
     99 android.app.Activity#onPause()}, como gravar em um banco de dados, porque isso pode retardar a transio
    100 visvel para a prxima atividade (execute operaes de encerramento pesadas durante
    101 {@link android.app.Activity#onStop onStop()}).</p>
    102 
    103 <p>Simplifique a quantidade de operaes feitas no mtodo {@link android.app.Activity#onPause
    104 onPause()} para permitir uma transio mais rpida para o prximo
    105 destino do usurio se a atividade for realmente interrompida.</p>
    106 
    107 <p class="note"><strong>Observao:</strong> quando a atividade est pausada, a instncia {@link
    108 android.app.Activity}  mantida na memria e chamada novamente quando a atividade  retomada.
    109 No  necessrio reiniciar componentes que foram criados durante qualquer mtodo de retorno de chamada que
    110 leve ao estado Reiniciado.</p>
    111 
    112 
    113 
    114 <h2 id="Resume">Reiniciar sua atividade</h2>
    115 
    116 <p>Quando o usurio reinicia a atividade do estado Pausado, o sistema chama o mtodo {@link
    117 android.app.Activity#onResume()}.</p>
    118 
    119 <p>Certifique-se de que o sistema chama esse mtodo sempre que a atividade entrar no primeiro plano,
    120 mesmo quando estiver sendo criada. Dessa forma, implemente o {@link
    121 android.app.Activity#onResume()} para inicializar os componentes liberados durante {@link
    122 android.app.Activity#onPause()} e execute quaisquer outras inicializaes que devem ocorrer sempre que a
    123 atividade entrar em estado Reiniciado (como ao iniciar animaes e componentes de inicializao usados apenas
    124 enquanto a atividade tiver o foco do usurio).</p>
    125 
    126 <p>O seguinte exemplo de {@link android.app.Activity#onResume()}  uma contrapartida ao
    127 exemplo {@link android.app.Activity#onPause()} acima. Portanto, ele inicializa a cmera que 
    128  liberada quando a atividade entra em pausa.</p>
    129 
    130 <pre>
    131 &#64;Override
    132 public void onResume() {
    133     super.onResume();  // Always call the superclass method first
    134 
    135     // Get the Camera instance as the activity achieves full user focus
    136     if (mCamera == null) {
    137         initializeCamera(); // Local method to handle camera init
    138     }
    139 }
    140 </pre>
    141 
    142 
    143 
    144 
    145 
    146 
    147 
    148