我不知道这些解决方案是否正确。但你绝对可以试一试。
A. Binding
和Unbinding
服务于onPause()
和onResume()
Acitivity
应该unBind
服务于onPause()
Activity,但如果你没有调用 an unbind ()
,我想你会得到内存泄漏。
Activity
应该reBind
服务于onResume()
Activity。但是这些绑定解绑可能会导致你NullPointerException
乙。Sending BroadCastReceiver
可能会为您建造类似的东西。
根据您的需要注册和取消注册广播
在你的 Activity-onPause() 内部
String PAUSE_MUSIC="PAUSE_MUSIC_INSIDE_SERVICE";
Intent intent = new Intent(PAUSE_MUSIC_INSIDE_SERVICE);
sendBroadcast(intent);
在您的服务中
BroadCastReceiver receiver=new PauseMusicReceiver();
IntentFilter filter = new IntentFilter(Activity.PAUSE_MUSIC);
getApplicationContext().registerReceiver(receiver, filter);
class PauseMusicReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
//Pause your MediaPlayer
}
}
C. _Sleep or Suspend Thread which is created at Service
Service 中的媒体也由您为 Service 创建的线程处理。因此,在 Activity 的 onPause() 处暂停或将该线程置于睡眠模式并在 Activity 的 onResume() 处再次恢复该线程可能会有所帮助。
线程方法 -onSuspend()、onStart()、onResume()、onSleep()