2012-06-05 3 views
1

Courant J'ai trois classes: activité (A), broadcastReceiver (B) et service (C).service android, diffusion et activité

En supposant que A se lie à C et maintenant, B obtient une nouvelle intention du système.

Est-ce que B peut directement se lier au C (exactement le même)? Je découvre qu'il existe une méthode peekService dans broadcastReceiver. Ma question est puis-je lier le service en cours d'exécution dans broadcastReceiver?

+0

et quelle est votre question? – Lucifer

Répondre

1

Si vous avez enregistré votre récepteur dynamiquement avec Context.registerReceiver(), vous pouvez lier à un Service à partir de la méthode onReceive.

Toutefois, si vous avez déclaré votre BroadcastReceiver dans le manifeste, vous ne devez pas lier à un service à partir de la méthode onReceive(). Vous pouvez commencer un Service cependant - vous ne pouvez pas lier à lui parce que bindService() est asynchrone. Plus de détails à ce sujet dans le Android Dev Guide et la documentation onReceive.

+0

Dans ma réponse originale, j'avais présenté les mauvaises conditions. J'ai édité la réponse avec les bonnes conditions. – curioustechizen

0

Je découvre que l'utilisation de peekService peut lier le service en cours d'exécution.

tel comme

IBinder ib = peekService(context, new Intent(context, 
        xxxxService.class)); 

((xxxxService.class) ib). faire quelque chose ici ...