我在绑定/解除绑定服务的问题上阻止了3天,我将我的旧活动分段传递。片段中的绑定服务似乎工作正常,但解绑服务崩溃,你能帮帮我吗?
@Override
public void onStart() {
//On attache la vue au service
getActivity().bindService(
new Intent(getActivity().getApplicationContext(), GeoLocatingService.class),
connection, Context.BIND_AUTO_CREATE);
super.onStart();
}
@Override
public void onStop() {
//On detache la vue du service
if(myService!=null){
getActivity().getApplicationContext().unbindService(connection);
}
super.onStop();
}
错误日志:
09-23 00:39:00.541:E / AndroidRuntime(17970):致命异常:主要 09-23 00:39:00.541:E / AndroidRuntime(17970): java.lang.IllegalArgumentException:服务未注册: com.timo.geolocalisation.Dashboard_Fragment$3@40557f58 09-23 00:39:00.541:E / AndroidRuntime(17970):at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:891) 09-23 00:39:00.541:E / AndroidRuntime(17970):at android.app.ContextImpl.unbindService(ContextImpl.java:925)09-23 00:39:00.541:E / AndroidRuntime(17970):at android.content.ContextWrapper.unbindService(ContextWrapper.java:352) 09-23 00:39:00.541:E / AndroidRuntime(17970):at com.timo.geolocalisation.Dashboard_Fragment.onStop(Dashboard_Fragment.java:220) 09-23 00:39:00.541:E / AndroidRuntime(17970):at android.support.v4.app.Fragment.performStop(Fragment.java:1651)09-23 00:39:00.541:E / AndroidRuntime(17970):at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:979) 09-23 00:39:00.541:E / AndroidRuntime(17970):at android.support.v4.app.FragmentManagerImpl.detachFragment(FragmentManager.java:1258) 09-23 00:39:00.541:E / AndroidRuntime(17970):at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:667) 09-23 00:39:00.541:E / AndroidRuntime(17970):at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460) 09-23 00:39:00.541:E / AndroidRuntime(17970):at android.support.v4.app.FragmentManagerImpl $ 1.run(FragmentManager.java:440) 09-23 00:39:00.541:E / AndroidRuntime(17970):at android.os.Handler.handleCallback(Handler.java:587)09-23 00:39:00.541:E / AndroidRuntime(17970):at android.os.Handler.dispatchMessage(Handler.java:92)09-23 00:39:00.541:E / AndroidRuntime(17970):at android.os.Looper.loop(Looper.java:123)09-23 00:39:00.541: E / AndroidRuntime(17970):at android.app.ActivityThread.main(ActivityThread.java:3691)09-23 00:39:00.541:E / AndroidRuntime(17970):at java.lang.reflect.Method.invokeNative(Native Method)09-23 00:39:00.541:E / AndroidRuntime(17970):at java.lang.reflect.Method.invoke(Method.java:507)09-23 00:39:00.541: E / AndroidRuntime(17970):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:847) 09-23 00:39:00.541:E / AndroidRuntime(17970):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)09-23 00:39:00.541:E / AndroidRuntime(17970):at dalvik.system.NativeStart.main(原生方法)
答案 0 :(得分:0)
似乎Service
已在三个Fragment
中的一个中停止,当您尝试停止其他两个Service
中的Fragment
时,您会收到此错误
从Android文档中可以看出:
请注意,对
Context.startService()
的多次调用不会嵌套(尽管它们会导致对onStartCommand()
进行多次相应的调用),因此无论启动多少次,服务都会被停止一次{{调用1}}或Context.stopService()
;但是,服务可以使用其stopSelf()
方法来确保在处理完启动意图之前不会停止服务。
因此,请检查其中一个stopSelf(int)
是否正在停止Fragment
,或者您可以在Service
中启动和停止该服务!如果FragmentActivity
需要Activity
,请Fragments
处理此问题并传递对Service
的引用。