J'ai essayé de lier un service qui a été démarré au démarrage à partir d'une activité. Le code pour démarrer au démarrage a été principalement pris du instant messenger.ServiceConnection :: onServiceConnected non appelé même si Context :: bindService renvoie true?
Telle est la définition AndroidManifest.xml pour les 3 composantes principales:
<!-- Receiver -->
<receiver android:name=".receiver.LifestylePPAutoStarter"
android:process="android.process.lifestylepp">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
<!-- Service -->
<service android:name=".service.LifestylePPService"
android:process="android.process.lifestylepp"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="edu.gatech.lifestylepp.ILifestylePPService" />
<action android:name="edu.gatech.lifestylepp.SERVICE" />
</intent-filter>
</service>
<!-- Activity -->
<activity android:name=".app.LifestylePPActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Le récepteur démarre le service au démarrage sans aucun problème. Toutefois, lorsque j'essaie de lier le service à mon activité, Context :: bindService renvoie true, mais ServiceConnection :: onServiceConnected n'est jamais appelé. En outre, lorsque je démarre le service à partir de l'activité, cela fonctionne comme prévu (ServiceConnection :: onServiceConnected est appelé).
Je sais que startService() n'implique pas de ServiceConnection. Ce que j'ai voulu dire c'est: Quand je démarre le service de l'activité, je peux le lier en utilisant bindService (intention, connection, 0) sans aucun problème. Le problème se produit uniquement lorsque le service est démarré à partir du récepteur. Merci pour votre suggestion, cependant! Malheureusement, j'ai déjà essayé d'exécuter l'activité et le service sur le même processus et cela n'a rien changé. – kloffy
Ajoutez l'indicateur BIND_AUTO_CREATE dans votre appel bindService(). – CommonsWare
Cela ne provoquerait-il pas le démarrage d'un nouveau service? Le service est déjà en cours d'exécution, il a été créé au démarrage par le récepteur. Je veux juste le lier de l'activité. – kloffy