2013-06-30 47 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

相关问题