Utilisez le Service en tant que singleton dans Android

Est-ce une mauvaise pratique pour créer un Service qui fonctionne comme un singleton? Je veux dire un Service qui n'a jamais cessé et qui contient certaines données privées que certains autres moteurs et Activities serait d'utiliser, de sorte que le Service pourrait avoir quelque chose comme:

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) {
         ...
     }
     ...
}

La raison de faire un Service au lieu de seulement un singleton, c'est qu'il doit fonctionner indépendamment de l'application, comme quand il démarre, il se connecte à un websocket qui ne devrait jamais être fermé et ne dépendent pas de l'application. Que suggéreriez-vous de moi? Est-il une meilleure façon d'utiliser de nouveau le Service afin de disposer de certaines données (par exemple la mProfiles tableau) disponibles à partir d'autres moteurs et Activities?

J'ai lu quelque part qu'un Service fonctionne comme un singleton, mais je ne sais pas comment accéder aux variables privées de tout autre point dans l'application.

Autant que je sache, vous ne devez pas créer une instance de service de vous-même, mais doit utiliser startService() à l'aide d'un contexte. Je ne sais pas quelles sont les conséquences de l'utilisation de new CustomService();
Salut, je vous remercie pour votre réponse. Mais startService va démarrer le service et appeler la onStartCommand, mais ce n'est pas ce que je veux. Je veux démarrer le service une fois, sur l'application de la méthode onCreate, et puis à partir de n'importe quel point de l'application d'une variable privée du service

OriginalL'auteur FVod | 2016-01-26