我正在制作视频播放器,使用onPause()
的活动方法启动服务。当我从后台/家庭杀死该应用程序时。服务onCreate()
方法自动调用,该方法先前已通过onStart()
方法调用。
我仍然对解决方案一无所知,但我进行了很好的搜索,但未找到任何解决方案。
谁能帮我吗?
protected void onPause() {
super.onPause();
Log.d("lifecycle", "pause pressed");
if (!checkServiceRunning(BackgroundPlayService.class)) {
startVideoBackgroundService();
}
if ( mExoPlayerView.getPlayer()!=null) {
if (activityplayerisplaying && servicebackgroundplaystate) {
mExoPlayerView.getPlayer().setPlayWhenReady(false);
} else if (servicebackgroundplaystate) {
mExoPlayerView.getPlayer().setPlayWhenReady(false);
} else if (activityplayerisplaying) {
mExoPlayerView.getPlayer().setPlayWhenReady(true);
} else {
mExoPlayerView.getPlayer().setPlayWhenReady(false);
}
}
}
启动服务的方法是
public void startVideoBackgroundService() {
if (servicebackgroundplaystate && mExoPlayerView.getPlayer().getPlaybackState() != mExoPlayerView.getPlayer().STATE_ENDED) {
Intent datasending = new Intent(VideoPlayer.this, BackgroundPlayService.class);
datasending.putStringArrayListExtra("playlist", playList);
datasending.putExtra("index", mExoPlayerView.getPlayer().getCurrentWindowIndex());
datasending.putExtra("name", name);
datasending.putExtra("Activityplyerstate", activityplayerisplaying);
datasending.putExtra("currentActvityposition", mExoPlayerView.getPlayer().getCurrentPosition());
datasending.putExtra("repeatemode", mExoPlayerView.getPlayer().getRepeatMode());
Log.d("repeatmode", "" + mExoPlayerView.getPlayer().getRepeatMode());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(datasending);
} else {
startService(datasending);
}
}
}