2014-03-19 4 views
7

Ich habe einen Dienst, der im selben Prozess ausgeführt wird.Dienst überlebt die übergeordnete Anwendung auf Google Glass?

<service 
     android:name=".service.GlassService" 
     android:exported="true" 
     android:label="@string/app_name" /> 

Ich starte den Dienst mit startService().

 startService(new Intent(this, GlassService.class)); 

Wenn ich nach unten wischen, und beenden Sie die Anwendung, Service Leben auf. Wenn ich es von DDMS kill, Service ist neu gestartet, Anruf Service mit START_STICKY noch START_NOT_STICKY machen keinen Unterschied.

Die einzige Möglichkeit, den Dienst zu stoppen, ist, wenn ich explizit stopService() oder stopItself() aufrufen oder startService() weglassen.

Dies ist bei anderen Android-Geräten nicht der Fall. Ist dieses Verhalten typisch für Google Glass?

Antwort

1

Das ist normalerweise der Grund, warum Menschen Dienste nutzen. Sie sind Prozesse mit langer Laufzeit, die normalerweise für die Verarbeitung im Hintergrund oder für die Synchronisierung von Daten von einem Inhaltsanbieter verwendet werden. Es ist also leicht eine Erweiterung, dass sie ihren Elternprozess überleben können.

Quelle:

  1. Was Sie beschreiben, zu meiner Anwendung geschieht und es lief auf einem normalen Telefon
  2. sagt so in dieser Google-Dokumentation [docs] [1] (Lesen Sie die Teil, warum Dienste sind kein Gewinde)

    [1]: http://developer.android.com/reference/android/app/Service.html

+0

Auf unseren Nicht-Glas-Geräten wurde der Dienst immer beendet, wenn wir die Anwendung verließen (onDestroy() wurde aufgerufen), egal was wir getan haben. Unser Verständnis war, dass der Dienst implizit im selben Prozess läuft (nicht isoliert ist) wie die Anwendung. Wenn die Anwendung beendet wird, stirbt der Dienst. In der von Ihnen geposteten Referenz finde ich nichts über die Anwendung, die den Service überlebt. Kannst du explizit auf den Teil hinweisen, über den du gesprochen hast? – jellyfication

+0

Es gibt keinen zu erwartenden Verhaltensunterschied zwischen der Lebensdauer von Glas- und Nichtglas-Service. Was meinst du mit "wenn wir [die] Anwendung verlassen"? Kannst du bitte genauer sagen, was du damit auf Glas und Nicht-Glas meinst? Eine "Anwendung" endet erst, wenn alle Aktivitäten/Fragmente/Dienste/Threads gestoppt sind. Wenn Sie die Zurück-Taste drücken oder nach unten streichen, sollte die "Anwendung" nicht verlassen werden, wenn ein Dienst noch läuft. Ist es möglich, dass sich Ihre Live Card-Service-Implementierung von der Service-Implementierung Ihrer Nicht-Glass-App unterscheidet? – swooby