2012-11-26 22 views
3

每当我要么旋转手机或按Home键,应用程序崩溃,我得到以下异常:什么导致此IllegalArgumentException:服务未注册?

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: [email protected] 
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: [email protected] 
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 

这是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; 
    } 
}; 

我已经注册我的服务 - 至少我认为我是通过在我的清单中插入以下内容来实现的:

<service android:name="StationService" /> 

回答

1

我意识到,我的问题是,有时,当解除绑定我的服务该服务并不受限于首位。仅在onPause()中解除绑定服务似乎解决了我的问题。

0

在应用程序清单文件中注册您的服务。

+0

服务器确实已在清单中注册。 () – CodePrimate

0

您的服务在您的清单中注册不正确。它要么是:

<service android:name=".StationService" />

如果该服务是在同一个Java包在你的清单中指定的包。

或者,如果Service是在不同的Java包,在你的清单注册,那么你需要指定完整的包名称:

<service android:name="com.example.package.StationService" />

+0

我想这可能是问题所在。不过,具有.StationService,Service或com.example.package.StationService的服务无论如何都有任何影响。如果我尝试使用该服务,则将其全部删除将会使应用程序崩溃。 – CodePrimate

1

确保您绑定并从相同的上下文绑定。我得到这个错误,并发现它是因为我以前实现了一个与我绑定我的服务的上下文封装器。我的解绑是在View上下文中的,因此它不知道服务绑定/注册。