J'ai une question sur IntentService dans Android. Je définis mon propre service comme ci-dessous:Android Intent Service implémentant SensorEventListener
public class ABC étend IntentService implémente SensorEventListener {
@Override (d'intention Intent) de onHandleIntent protected void {}
@Override public void onSensorChanged (événement SensorEvent) {} }
Maintenant, si je démarre le service à partir d'une autre activité, onHandleIntent() est appelé. La documentation indique qu'il lance un thread de travail pour traiter la demande. Cependant, lorsque la méthode onSensorChanged() est invoquée, quel thread exécutera le code défini dans la méthode onSensorChanged(). Sera-ce le fil de travail ou le fil d'application principal ???
Oui, je comprends cela. Ce que j'essaie de comprendre, c'est comment IntentService répond à la demande dans deux cas. onHandleIntent() et onSensorChanged(). onHandleIntent() lance un thread de travail et s'arrête tout seul à la fin. Qu'en est-il de onSensorChanged() ??? Quel thread est réellement appelé pour gérer cette requête? – pree
@pree - une fois que le thread de travail a terminé la gestion de tous les messages, ** il arrête l'ensemble du service IntentService **, ce qui signifie qu'il n'y a rien à recevoir pour les événements modifiés par le capteur. Si vous utilisiez un 'Service' régulier (qui ne serait pas arrêté), alors onSensorChanged()', comme toutes les méthodes d'un 'Service', serait appelé sur le thread principal. – ianhanniballake
Oui, j'ai compris. Il sera invoqué sur le thread principal. De plus, j'ai fait une petite expérience et j'ai appelé la méthode onHandleInvoked() en utilisant startService(). Il s'est arrêté après avoir terminé la demande. Puis j'ai touché le capteur pour invoquer la méthode onSensorChanged() et il a été invoqué sur le thread principal. Comment? Si l'ensemble du service s'est arrêté après avoir terminé la première demande, comment se fait-il qu'il ait pu détecter les changements de capteur ??? – pree