Je démarre mon service dans onCreate() (si onCreate est appelé la première fois) et j'appelle bindService dans onStart(). Le service fonctionne probablement, mais après avoir appelé bindService mon instance locale du service est toujours nulle. En outre, semble être que getService() n'est pas appelé. Voici un code:Problèmes liés aux liaisons Android: service démarré
@Override
protected void onCreate(Bundle savedInstanceState) {
...
if(savedInstanceState == null){
final Intent i = new Intent(this, HostService.class);
startService(i);
}
}
protected void onStart(){
super.onStart();
bindService(new Intent(this, StartGameActivity.class), connection, Context.BIND_AUTO_CREATE);
}
private ServiceConnection connection = new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName arg0, IBinder arg1) {
HostBinder binder = (HostBinder) arg1;
hostService = binder.getService();
isBound = true;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
isBound = false;
}
};
et HostService:
...
private HostBinder binder = new HostBinder();
...
public class HostBinder extends Binder{
HostService getService(){
Log.d(TAG, "getService");
return HostService.this;
}
}
@Override
public IBinder onBind(Intent arg0) {
return binder;
}
Pourquoi est hostService encore nulle, après onStart() est appelée et pourquoi est-getService est pas appelé ("getService" n'est pas imprimer dans LogCat)?
thx & concernant
merde ahhhhw. Oui, je voulais dire HostService.class. M'a mis dehors pendant quelques heures: d thx beaucoup :) – user2224350
Je ne suis pas tout à fait sûr que je comprends votre question, mais si je le fais, le problème est que cela prend du temps pour le service de répondre à la demande de liaison et l'Android Le système ne veut pas que votre onCreate() reste en attente. La requête est donc gérée de manière asynchrone et votre onServiceConnected() est appelé plus tard. –
@ user2224350 - Veuillez accepter la réponse pour que cette question soit marquée comme réponse. –