2013-06-30 82 views
1

我正在做一個收音機應用,MediaPlayerService什麼時候startService()停止了服務?

startService()啓動時創建一個StreamPlayerFragment因爲音頻流必須只要發揮其作爲應用程序運行,而我綁定只在StreamPlayerFragment,因爲只有這個Fragment需要訪問MediaPlayer播放/暫停/停止音頻流。

現在我不知道何時/如何Service應該停止?我需要知道何時停止或銷燬以便能夠釋放MediaPlayer

我是否應該讓Android終止Service並釋放MediaPlayer中的ServiceonDestroy?我看不到其他的選擇,因爲我需要只要應用程序運行時,它運行...

public class StreamPlayerFragment extends Fragment{ 

    @Override 

    @Override 
    public void onCreate (Bundle savedInstanceState){ 

     super.onCreate(savedInstanceState); 

     // start service 

     Intent intent = new Intent(getActivity(), StreamService.class); 
     getActivity().startService(intent); 
    } 

    @Override 
    public void onResume() {  

     super.onResume(); 

     // bind service 

     Intent intent = new Intent(getActivity(), StreamService.class); 
     getActivity().bindService(intent, mConnection, Context.BIND_AUTO_CREATE) 
    } 

    @Override 
    public void onPause() { 

     // unbind service 

     if (mBound) { 
     getActivity().unbindService(mConnection); 
     mBound = false; 
     } 

     super.onPause(); 

    } 
} 

回答

0

如果用startService()啓動它,你將有stopService()停止它。解除綁定是不夠的。

http://developer.android.com/reference/android/app/Service.html

如果有人致電Context.startService(),則系統將檢索服務(創建它,如果需要調用它的onCreate()方法),然後調用其onStartCommand(意向,INT,INT )方法與客戶端提供的參數。此服務將繼續運行,直到調用Context.stopService()或stopSelf()。

如果它需要與您的活動一起運行,爲什麼不作爲綁定服務啓動它?

http://developer.android.com/guide/components/bound-services.html

+0

我需要它旁邊的應用程序運行,而不是一個活動(但它必須綁定到'StreamPlayerFragment'的'Activity'控制'MediaPlayer'在'StreamService')。如果我想將它作爲綁定服務啓動,我必須將其綁定到我的所有活動,這需要大量無用的代碼,並且不是必需的。我不想調用'stopService()',因爲只要我的應用程序運行,我就想讓'Service'運行。這就是爲什麼我想最好的辦法是讓Android在'StreamService'的'onDestroy()'中銷燬'Service'並釋放'MediaPlayer'。我只是想知道是否有其他方法... – jul

相關問題