Consejos para crear un servicio de Android que encuesta un servicio web para manejar una conectividad incorrecta

Estoy desarrollando una aplicación para Android que necesita consultar una página web específica en intervalos de tiempo. Lo tengo hasta el punto en que efectivamente encuesta la página en un intervalo específico, y ese intervalo se especifica en una SharedPreference que puede ser cambiado por el usuario en la página de configuración de la aplicación. Pero las complicaciones surgen cuando la conectividad de red es escamosa.

Por ejemplo, ¿cómo puedo asegurar que el Servicio "despierte" el adaptador de red y le dé tiempo suficiente para conectarse antes de realizar sondeos en la página, en el caso de que el teléfono estuviera durmiendo para ahorrar energía? Esta acción de sondeo puede ocurrir tan poco como una vez cada 24 horas, así que no quiero perder una acción sólo porque la red estaba apagada (pero activada unos segundos, minutos o incluso horas más tarde).

O hay veces en que el servicio web no responde, o DNS no responde, o lo que tiene, y por cualquier razón no obtiene una respuesta a pesar de que el teléfono está conectado técnicamente. ¿Qué tipo de regla pongo en su lugar para hacer que este intente más tarde, por lo que no estoy repitiendo repetidamente cuando el usuario específicamente apagó su Internet, pero estoy repitiendo lo suficientemente pronto como si fuera sólo un hipo, los datos pueden ser Recibido poco después del primer intento?

¿Hay algún ejemplo para este tipo de situación? ¿Cuál es la lógica para manejar mejor esto?

Escuche CONNECTIVITY_ACTION

Esto parece un buen código de ejemplo . He aquí un fragmento:

IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); context.registerReceiver(mReceiver, filter); 

Echa un vistazo a esta otra pregunta sobre ¿Cómo podemos ser notificados si el teléfono tiene acceso a Internet?

Compruebe el BuzzBox SDK para manejar su tarea periódica.

http://hub.buzzbox.com/android-sdk/

Si declara su tarea como una tarea de red, la biblioteca volverá a intentar los errores tan pronto como el teléfono se conecte de nuevo. Está utilizando un BroadcastReceiver, que debe declarar en su manifiesto:

  <receiver android:name=".NetworkChangeReceiver" android:label="NetworkChangeReceiver"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> </intent-filter> </receiver> 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.