Android 服务方法OnCreate调用了两次为什么?
我正在制作一个视频播放器,通过Android 服务方法OnCreate调用了两次为什么?,android,service,Android,Service,我正在制作一个视频播放器,通过onPause()活动方法启动服务。当我从后台/主页关闭应用程序时。自动调用服务onCreate()方法,该方法已在前面使用onStart()方法调用。 我仍然不知道解决方案,但我搜索得很好,但没有找到任何解决方案。 有人能帮我吗 protected void onPause() { super.onPause(); Log.d("lifecycle", "pause presse
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);
}
}
}
你能给我们一些代码,让我们了解你想要实现的目标。尽管如此,如果在活动的onPause()方法中启动服务,则始终会调用服务的onCreate()。当您尝试终止应用程序时,它会首先通过onPause()来调用服务的onCreate()方法,具体取决于您的操作方式。这只是从逻辑上讲,你的一点代码可能会帮助我做出更好的回答#T.Mas谢谢你的回复我上传了一些代码。我的场景是在活动暂停或销毁时启动服务,并在创建或恢复服务时停止服务。因为onPause of activity每次在任何场景中离开活动都会调用它,所以我在那里调用start服务。但现在,当我从后台/家庭服务站关闭应用程序时,我正在使用前台服务。