2010-08-02 10 views
1

J'ai un service local démarré dans mon activité principale. Le service est responsable des E/S réseau. Il interagit également avec d'autres activités dans ma demande. Jusqu'à maintenant, le service fournissait seulement des données à l'activité (en utilisant des rappels et non des intentions.)Android - Envoi de données d'une activité à un service

Maintenant, j'ai besoin d'envoyer des données (objets personnalisés) de mes activités au service. Je comprends une façon de le faire en utilisant Intents. Je sais qu'il est possible de recevoir une intention dans le service en remplaçant le onStartCommand() dans mon service. Mais je ne sais pas si onStartCommand sera invoqué chaque fois que je diffuserai une intention de mon activité d'envoi. Est-ce qu'un service peut également être BroadcastReceiver? Si oui - comment?

Merci.

Répondre

4

Vous pouvez créer un objet BroadcastReceiver dans le service et l'enregistrer pour écouter tout événement de diffusion souhaité. Il est quelque chose comme ceci:

BroadcastReceiver mScreenStateReceiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     //handle the broadcast event here 
    } 
}; 

@Override 
public void onCreate() { 
    super.onCreate(); 

    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); 
    filter.addAction(Intent.ACTION_SCREEN_ON); 
    registerReceiver(mScreenStateReceiver, filter); 

} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    unregisterReceiver(mScreenStateReceiver); 
} 

Cordialement,

Questions connexes