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 @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 @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