Android: Comment utiliser un Gestionnaire handleMessage et accéder à la référence à la MainActivity

J'ai un service qui reçoit une commande à partir de l'Internet et lance un thread d'arrière-plan. Ce fil est passé d'un gestionnaire du service (le service est limité et passé le gestionnaire) et envoie un message au gestionnaire de prendre une photo. Je suis bloqué sur la mise en œuvre de la gestionnaire.

static Handler handler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            //TODO: Handle different types of messages
            mCamera.takePicture(null, null, MainActivity.this);
        }
};

Questions:

  • N'Gestionnaire doivent être statique? Sans statique, j'obtiens "Cette classe de Gestionnaire doit être statique ou des fuites pourraient se produire"
  • Ne mCamera besoin d'être statique? J'ai été dit de faire mCamera statique, mais pourquoi est-ce nécessaire? Est-il un moyen de l'installation takePicture sans faire mCamera statique?
  • Quelle est la bonne manière de passer la référence à MainActivity? Droit maintenant, je reçois le message d'erreur: "Pas de enfermant instance du type MainActivity est accessible dans la portée du

OriginalL'auteur Rich | 2013-06-17