服务方法OnCreate为何调用两次?

时间:2019-12-24 09:29:44

标签: android service

我正在制作视频播放器,使用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);
        }

    }
}

0 个答案:

没有答案