Ausführen mehrerer Dienste

8

Ich baue gerade eine Bewegungserkennungsfunktion in meine Anwendung ein. Ich habe keine Möglichkeit gefunden, den Beschleunigungsmesser kontinuierlich zu überwachen, ohne das Telefon ständig wach zu halten. Um dies zu überwinden, habe ich derzeit einen Service, der SensorEventListener implementiert. Ich kann diesen Dienst in Intervallen starten (mit dem Alarmmanager), die Messwerte vom Geräte-Akzelerometer abrufen, feststellen, ob sich das Gerät bewegt, und dann den Dienst herunterfahren. Im Allgemeinen sieht dies wie folgt aus:

%Vor%

Ich habe jedoch ein weiteres Problem, da meine Anwendung einen zweiten Dienst hat, der nach einem anderen Zeitplan aufgerufen wird. Soweit ich weiß, werden beide Dienste in demselben Thread ausgeführt, was nicht gut ist, da sie Konflikte verursachen könnten.

Ich muss wissen, ob es einen sicheren Weg gibt, mehr als einen Dienst gleichzeitig innerhalb derselben Anwendung auszuführen . Ich habe die Verwendung von IntentService anstelle der Standard-Service-Klasse in Betracht gezogen. Mir ist bewusst, dass diese einen eigenen Worker-Thread zur Bearbeitung von Aufrufen implementieren. Das Problem ist, dass ich keine Ahnung habe, wie ich die Art von asynchronen Rückrufen implementieren kann, die von SensorEventListener aus einem IntentService benötigt werden. Um es anders auszudrücken, ich kann nicht garantieren, dass eine Methode wie onSensorChanged einen Rückruf erhält, bevor IntentService seine Arbeit beendet und herunterfährt.

Alle Vorschläge zu einer Problemumgehung für dieses Problem werden sehr geschätzt.

    
user522210 07.04.2011, 15:12
quelle

1 Antwort

8
  

, da sie Konflikte verursachen könnten.

Wie?

  

Ich muss wissen, ob es einen sicheren Weg gibt, mehr als einen Dienst gleichzeitig in derselben Anwendung auszuführen

Es besteht kein intrinsisches Problem darin, mehr als einen Dienst gleichzeitig in derselben Anwendung zu haben, ebenso wenig wie ein intrinsisches Problem darin besteht, dass mehr als eine Aktivität in derselben Anwendung vorhanden ist.

  

Alle Vorschläge zu einer Problemumgehung für dieses Problem werden sehr geschätzt.

Sie haben kein Problem gezeigt.

    
CommonsWare 07.04.2011, 17:05
quelle