1 page.title=Cmo manipular los receptores de emisin bajo demanda 2 parent.title=Cmo optimizar la duracin de la batera 3 parent.link=index.html 4 5 trainingnavtop=true 6 7 previous.title=Cmo determinar y controlar el estado de la conectividad 8 previous.link=connectivity-monitoring.html 9 10 @jd:body 11 12 <div id="tb-wrapper"> 13 <div id="tb"> 14 15 <h2>En esta seccin puedes aprender:</h2> 16 <ol> 17 <li><a href="#ToggleReceivers">Cmo alternar y superponer receptores de cambio de estado para mejorar el rendimiento</a></li> 18 </ol> 19 20 21 <h2>Tambin puedes consultar:</h2> 22 <ul> 23 <li><a href="{@docRoot}guide/components/intents-filters.html">Intentos y filtros de intentos</a> 24 </ul> 25 26 </div> 27 </div> 28 29 <p>La forma ms sencilla de controlar los cambios en el estado del dispositivo es crear un {@link android.content.BroadcastReceiver} para cada estado que vayas a controlar y registrar cada uno de ellos en el archivo de manifiesto de tu aplicacin. A continuacin, en cada uno de esos receptores solo tienes que volver a programar las alarmas recurrentes en funcin del estado actual del dispositivo.</p> 30 31 <p>Un efecto secundario de este mtodo es que tu aplicacin activar el dispositivo siempre que uno de los receptores se active (probablemente, con ms frecuencia de la necesaria).</p> 32 33 <p>Te recomendamos que inhabilites o habilites los receptores de emisin en el momento de la ejecucin. De este modo, puedes utilizar los receptores que hayas declarado en el archivo de manifiesto como alarmas pasivas que se activan mediante los eventos del sistema solo cuando es necesario.</p> 34 35 36 <h2 id="ToggleReceivers">Cmo alternar y superponer receptores de cambio de estado para mejorar el rendimiento </h2> 37 38 <p>Se puede utilizar el {@link android.content.pm.PackageManager} para alternar el estado habilitado en cualquier componente definido en el archivo de manifiesto, incluidos los receptores de emisin que quieras habilitar o inhabilitar, como se muestra en el fragmento que aparece a continuacin:</p> 39 40 <pre>ComponentName receiver = new ComponentName(context, myReceiver.class); 41 42 PackageManager pm = context.getPackageManager(); 43 44 pm.setComponentEnabledSetting(receiver, 45 PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 46 PackageManager.DONT_KILL_APP)</pre> 47 48 <p>Al utilizar esta tcnica, si determinas que la conectividad se ha perdido, puedes inhabilitar todos los receptores excepto el receptor de cambio de conectividad. Por el contrario, cuando ests conectado, puedes dejar de detectar cambios de conectividad y solo comprobar si tienes conexin antes de realizar una actualizacin y de volver a programar una alarma de actualizacin recurrente.</p> 49 50 <p>Puedes utilizar la misma tcnica para posponer una descarga que requiera un nivel de ancho de banda superior para completarse. Solo tienes que habilitar un receptor de emisin que detecte los cambios de conectividad y que inicie la descarga solo cuando ests conectado a una red Wi-Fi.</p> 51