Ce qui est à l'origine de ce IllegalArgumentException: Service non Enregistré?
Chaque fois que je l'ai faites pivoter le téléphone ou appuyez sur le bouton d'Accueil de l'application se bloque et j'obtiens l'exception suivante:
11-25 22:17:23.855: E/AndroidRuntime(5033): FATAL EXCEPTION: main
11-25 22:17:23.855: E/AndroidRuntime(5033): java.lang.RuntimeException: Unable to stop activity {com.liteapps.handin_3/com.liteapps.handin_3.MainActivity}: java.lang.IllegalArgumentException: Service not registered: com.liteapps.handin_3.MainActivity$2@42116cf0
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3363)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3417)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3615)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.app.ActivityThread.access$700(ActivityThread.java:142)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1214)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.os.Handler.dispatchMessage(Handler.java:99)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.os.Looper.loop(Looper.java:137)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.app.ActivityThread.main(ActivityThread.java:4931)
11-25 22:17:23.855: E/AndroidRuntime(5033): at java.lang.reflect.Method.invokeNative(Native Method)
11-25 22:17:23.855: E/AndroidRuntime(5033): at java.lang.reflect.Method.invoke(Method.java:511)
11-25 22:17:23.855: E/AndroidRuntime(5033): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
11-25 22:17:23.855: E/AndroidRuntime(5033): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
11-25 22:17:23.855: E/AndroidRuntime(5033): at dalvik.system.NativeStart.main(Native Method)
11-25 22:17:23.855: E/AndroidRuntime(5033): Caused by: java.lang.IllegalArgumentException: Service not registered: com.liteapps.handin_3.MainActivity$2@42116cf0
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:917)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.app.ContextImpl.unbindService(ContextImpl.java:1253)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.content.ContextWrapper.unbindService(ContextWrapper.java:405)
11-25 22:17:23.855: E/AndroidRuntime(5033): at com.liteapps.handin_3.MainActivity.onStop(MainActivity.java:71)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1204)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.app.Activity.performStop(Activity.java:5146)
11-25 22:17:23.855: E/AndroidRuntime(5033): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3358)
11-25 22:17:23.855: E/AndroidRuntime(5033): ... 12 more
Et c'est mConnection
/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection()
{
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
//We've bound to LocalService, cast the IBinder and get LocalService instance
LocalBinder binder = (LocalBinder) service;
mService = binder.getService();
mBound = true;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
mBound = false;
}
};
J'ai déjà enregistré mon service - Au moins, je pense que j'ai fait donc par l'insertion, dans mon manifeste :
<service android:name="StationService" />
OriginalL'auteur CodePrimate | 2012-11-26
Vous devez vous connecter pour publier un commentaire.
J'ai réalisé que mon problème était de déliaison mon service lorsque le service n'est pas lié à la première place. Seulement déliaison le service en onPause() semble avoir résolu mon problème.
OriginalL'auteur CodePrimate
Assurez-vous que vous êtes de liaison et de déliaison dans le même contexte. J'ai été faire cette erreur et découvert que c'était parce que j'avais déjà mis en œuvre un contexte wrapper avec qui je lie mon service. Mon unbind était sur le point de Vue du contexte et donc il n'avait aucune connaissance de la liaison de service/de l'enregistrement.
OriginalL'auteur ComeIn
inscrire votre service dans le fichier de manifeste d'application.
OriginalL'auteur geeks
Votre service n'est pas correctement enregistré dans votre manifeste. Il devrait être:
<service android:name=".StationService" />
Si le service est dans le même package Java comme le package spécifié dans votre manifeste.
Ou si le
Service
est dans un autre package Java à celle enregistrée dans votre manifeste, alors vous devez spécifier le nom du package:<service android:name="com.example.package.StationService" />
OriginalL'auteur Joseph Earl