Android 从活动暂停mediaplayer

Android 从活动暂停mediaplayer,android,Android,我有一个带有首选项的活动:启用/禁用声音和启用/禁用声音背景。阅读sharepreferences,我启动一个启动mediaplayer的服务。当活动进入onPause()状态时,我需要暂停mediaplayer 活动: // reading sharedpreferences, if true: startService(new Intent(this, UnUsedService.class)); 服务: private PendingIntent pendingInten

我有一个带有首选项的活动:启用/禁用声音和启用/禁用声音背景。阅读sharepreferences,我启动一个启动mediaplayer的服务。当活动进入
onPause()
状态时,我需要暂停mediaplayer

活动:

// reading sharedpreferences, if true:
    startService(new Intent(this, UnUsedService.class));
服务:

    private PendingIntent pendingIntent;
    public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);
    player.start();

};

我不知道这些解决方案是否正确。但你绝对可以试一试

A.
绑定
解除绑定
服务于
onPause()
onResume()

Acitivity
应该
unBind
以在活动的
onPause()
上进行服务,但是如果您没有调用
unBind()
,我想您会出现内存泄漏

活动
重新绑定
到活动的
onResume()
服务。但是这些绑定解除绑定可能会导致
NullPointerException


B<代码>发送广播接收器可能会为您构建类似的功能

根据需要注册和取消注册广播

活动内部-onPause()

您的服务内部


C<代码>在服务中创建的休眠或挂起线程

服务内部的介质也由您为服务创建的线程处理。因此,在活动的onPause()处挂起或将该线程置于睡眠模式,并在活动的onResume()处再次恢复该线程可能会有所帮助。

线程方法-onSuspend()、onStart()、onResume()、onSleep()

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
   }
}