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