2010-07-16 3 views
4

Je développe une application Android qui doit interroger une page Web spécifique dans des intervalles de temps. Je l'ai au point où il interroge effectivement la page sur un intervalle spécifique, et cet intervalle est spécifié dans un SharedPreference qui peut être modifié par l'utilisateur dans la page des paramètres de l'application. Mais des complications surviennent lorsque la connectivité réseau est floconneuse. Par exemple, comment puis-je m'assurer que le service "réveille" la carte réseau et lui donne amplement le temps de se connecter avant d'interroger la page, dans le cas où le téléphone dormait pour économiser l'énergie? Cette action d'interrogation peut se produire aussi rarement qu'une fois toutes les 24 heures, donc je ne veux pas manquer une action juste parce que le réseau était éteint (mais allumé quelques secondes, minutes ou même heures plus tard).Conseils pour créer un service Android qui interroge un service Web gérer une mauvaise connectivité

Il arrive parfois que le service Web ne réponde pas ou que DNS ne réponde pas et que vous n'obteniez aucune réponse, même si le téléphone est techniquement connecté. Quel genre de règle dois-je mettre en place pour faire ce réessai plus tard, de sorte que je ne réessaye pas à plusieurs reprises quand l'utilisateur a spécifiquement éteint leur Internet mais je réessaye assez tôt que si c'était juste un hoquet, les données peuvent être reçu peu de temps après le premier essai?

Existe-t-il des exemples pour ce type de situation? Quelle est la logique pour mieux gérer cela?

Répondre

1

Vérifiez le SDK BuzzBox pour gérer votre tâche périodique.

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

Si vous déclarez votre tâche en tant que tâche réseau, la bibliothèque une nouvelle tentative sur les erreurs dès que le téléphone est connecté à nouveau. Il utilise un BroadcastReceiver, que vous devez déclarer dans votre manifeste:

<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> 
Questions connexes