我的偏好活动:启用/禁用声音并启用/禁用声音背景。阅读共享我开始启动媒体播放器的服务。当活动进入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();
};
答案 0 :(得分:1)
我不知道这些解决方案是否正确。但你绝对可以尝试一下。
A。 Binding
和Unbinding
服务于onPause()
和onResume()
Acitivity
应unBind
在onPause()
活动时提供服务,但如果您没有拨打unbind ()
,我认为您会收到内存泄漏。
Activity
应reBind
在onResume()
活动时提供服务。但是这些绑定解除绑定可能会导致NullPointerException
<强>乙即可。 Sending BroadCastReceiver
可能会为你建立类似的东西。
根据您的需求注册和取消注册广播
在您的活动中 - 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
服务中的媒体也处理您为服务创建的主题。因此,可以在Activity的onPause()中暂停或将该线程置于睡眠模式,并在Activity的onResume()处再次恢复该线程。
线程方法-onSuspend(),onStart(),onResume(),onSleep()