Erstelle nur eine Instanz von Service (Android)
Wie kann ich sicherstellen, dass nur eine Instanz des Dienstes erstellt wird?
Ich habe einige Funktionen mit der Protokollierung überprüft (WeatherService ist die Klasse, die Service erweitert):
Log.i(TAG, "Start Id:" + WeatherService.this.hashCode());
Log.i(TAG, "End Id:" + WeatherService.this.hashCode());
Es gibt verschiedene Hash-Codes, auch wenn ich sicher bin, dass dieselbe Funktion zweimal ausgeführt wird (Download):
09-12 01:00:55.195: INFO/WeatherService(7222): Start Id:1137653208
09-12 01:00:57.235: INFO/WeatherService(7222): Start Id:1137654296
09-12 01:00:59.035: INFO/WeatherService(7222): Start Id:1138806536
09-12 01:01:39.085: INFO/WeatherService(7222): End Id:1137654296
09-12 01:01:39.265: INFO/WeatherService(7222): Start Id:1137654296
09-12 01:02:22.175: INFO/WeatherService(7222): End Id:1137653208
09-12 01:02:24.815: INFO/WeatherService(7222): End Id:1138806536
09-12 01:02:24.836: INFO/WeatherService(7222): Start Id:1138806536
09-12 01:02:40.275: INFO/WeatherService(7222): End Id:1137654296
Ich binde eine Aktivität an den Dienst mit:
bindService(new Intent(getApplicationContext(), WeatherService.class)
,mServiceConnection, BIND_AUTO_CREATE);
Und der Service kann einige Minuten ausgeführt werden, bis er abgeschlossen ist. Daher kann der Service an viele Aktivitäten gebunden / von diesen erstellt werden.