Mit Service als singleton in Android

Ist es eine schlechte Praxis zu erstellen Service das funktioniert als singleton? Ich meine ein Service ist, nie aufgehört, und enthält einige private Daten, dass einige andere Motoren Activities verwenden würde, so die Service haben könnte, so etwas wie:

public class CustomService extends Service {
    private List<Profile> mProfiles;
    private static CustomService instance;

     public static CustomService getInstance() {
         if(instance == null) {
             instance = new CustomService();
         }
         return instance;
     }

     public List<Profile> getProfiles() {
          return mProfiles;
     }

     @Override
     public int onStartCommand(Intent intent, int flags, int startId) {
         ...
     }
     ...
}

Dem Grund zu tun, eine Service statt nur ein singleton ist, dass es arbeiten muss, unabhängig von der Anwendung, als wenn es beginnt, die es verbindet, eine websocket-das sollte nie geschlossen werden und hängen nicht von der Anwendung. Was würden Sie mir empfehlen zu tun? Gibt es einen besseren Weg, um re-nutzen Sie die Service um einige Daten (zum Beispiel die mProfiles array) von anderen Motoren und Activities?

Habe ich irgendwo gelesen, dass ein Service funktioniert wie ein singleton, aber ich weiß nicht, wie Zugriff auf die privaten Variablen von jedem anderen Punkt in der Anwendung.

  • Soweit ich weiß sollte man nicht, erstellen Sie eine service-Instanz selbst, sondern verwenden sollten startService() mit einem Kontext. Ich bin mir nicht sicher, was die Folgen der Verwendung new CustomService();
  • Hi, danke für deine Antwort. Aber startService startet den Dienst und rufen Sie die onStartCommand, aber das ist nicht das, was ich will. Ich will den Dienst starten, nachdem Sie auf Antrag der onCreate-Methode, und dann von jedem anderen Punkt der Anwendung einer privaten variable des service
InformationsquelleAutor FVod | 2016-01-26
Schreibe einen Kommentar