2017-05-19 21 views
0

サービスに問題があります。サービスがメディアプレーヤーの新しいインスタンスを作成しています

メソッドでは、私はメディアプレーヤーを作成しています。 私はアクティビティ間を移動するときに、スムーズにサービスにアクセスでき、同じメディアプレーヤーインスタンスを保持します。私がアプリケーションを残すと(サービスメディアプレイヤーからのオーディオはまだ再生されています)、アプリケーションに戻りますが、新しいMediaPlayerインスタンスが取得されます。前のインスタンスからのオーディオストリームがまだ再生されています。

私はMediaPlayerの同じインスタンスにアクセスして、好きなように曲を操作することができます(一時停止など)。

問題の原因がわかりますか?

class PlayerService : Service(), MediaPlayer.OnPreparedListener, PlayerServiceContract.ServiceContract { 

    private val mBinder = PlayerBinder() 

    private var mPlayer: MediaPlayer? = null 

    private var mPresenter: PlayerServiceContract.Presenter? = null 

    private var mRecording: Recording? = null 

    override fun onCreate() { 
     super.onCreate() 
     mPlayer = MediaPlayer() 
     mPlayer?.setWakeMode(applicationContext, 
       PowerManager.PARTIAL_WAKE_LOCK) 
     mPlayer?.setAudioStreamType(AudioManager.STREAM_MUSIC)   
     mPlayer?.setOnPreparedListener(this) 
+1

サービスのonDestroy()が呼び出されているかどうかを確認します。 – Naetmul

+1

アクティビティがなくなったときにサービスのバインドを解除すると、そのアプリケーションを終了するときにサービスが破棄される可能性があります。最初にそれをチェックしてください。 – Naetmul

+0

コードが完成していない場合は、完全なクラスまたは少なくとも完全な関数コードをここに入力してください。 – chandil03

答えて

1

サービスがすべてのバインディングに対してバインド解除されると、バインドされたサービスがシャットダウンされます。
startService()によって開始されるサービスは、stopSelf()またはstopService()を呼び出してサービスがシャットダウンされると、シャットダウンされます。

startService()bindService()によって呼び出されるサービスは、AND stopSelf()またはstopService()の場合は破棄されます。

サービスは開始され、接続がバインドされていることがあります。 このような場合、システムは、 が起動されているか、または1つまたは複数の接続が Context.BIND_AUTO_CREATEフラグである限り、サービスの実行を継続します。これらのいずれの状況もなくなると、サービスのonDestroy()メソッドが呼び出され、サービスは が有効に終了します。すべてのクリーンアップ(スレッドの停止、 レシーバの登録解除)は、onDestroy()からの復帰時に完了する必要があります。
- 活動がなくなっている、あなたの場合は

Service.Service Lifecycle | Android Developers Doc、からは、サービスが結合していない状態に入るように思われ、破壊することができます。
再生を開始するときに同じサービスでstartService()に電話をかけ、再生を停止するときにstopSelf()に電話をかけて、メディアを再生している間にサービスを破棄できないことがあります。

注:すべてをアンバインドした後にstopSelf()に電話する必要があるとも言われています。停止とアンバインドの順序は関係がないと言う人もいます。どちらが正しいのか分かりません。

+0

ありがとう、私は実際にstartServiceではなくbindServiceによってサービスを開始しましたが、これが問題の根本でした。 – Orbite

関連する問題