0

我有一个带有偏好的活动:启用/禁用声音和启用/禁用声音背景。阅读 sharepreferences 我启动了一个启动媒体播放器的服务。onPause()当活动进入状态时,我需要暂停媒体播放器。

活动:

// 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();

};
4

1 回答 1

1

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

A. BindingUnbinding服务于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()

于 2013-01-05T15:14:38.903 回答