2013-09-22 26 views
1

由於綁定/解除綁定服務的問題,我在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:服務未註冊: [email protected] 09-23 00:39:00.541:E/AndroidRuntime(17970):在 android.app.LoadedApk。 forgetServiceDispatcher(LoadedApk.java:891) 09-23 00:39:00.541:E/AndroidRuntime(17970):在 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)在 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(Fragm entManager.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) :在 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):在 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):在 dalvik.system.NativeStart.main(本機方法)

+0

您是否試圖在任何地方停止或解除服務兩次?從日誌中看起來就像之前停止的服務。 – prijupaul

+0

它只停在方法停在3個片段,我不明白爲什麼它不能停止。我看起來可能是一個背景問題。 – WhatsUp

回答

0

看起來像Service停止三個Fragment S的一個,當你試圖阻止另外兩個Fragment S中Service你會得到這個錯誤。

從Android文檔,它說:

注意,要Context.startService()多次調用不嵌套(儘管也導致他們中onStartCommand()多個相應的調用),所以無論多少次啓動的服務會被停止一次Context.stopService()stopSelf()被調用;但是,服務可以使用它們的stopSelf(int)方法來確保服務不會停止,直到處理完啓動的意向。

所以,檢查是否Fragment之一停止Service,或者你可以就在FragmentActivity S停止服務!如果Activity需要Service,則讓Activity處理此問題並傳遞參考Fragments

+0

我必須推送所有功能。我認爲正確的做法是在我的3個碎片上實現偵聽器,以根據服務的結果來刷新視圖。 – WhatsUp