Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 服务方法OnCreate调用了两次为什么?_Android_Service - Fatal编程技术网

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服务。但现在,当我从后台/家庭服务站关闭应用程序时,我正在使用前台服务。