2016-08-01 10 views
0

ここで私は音楽再生のためのサービスを実行しています。 このコードスニペットは、私はそれを結合、その後、私のサービスを始めている私の活動アクティビティが破棄された後もサービスを有効に保つには?

if(musicServiceStartIntent == null) { 
      musicServiceStartIntent = new Intent(this, MusicService.class); 
      startService(musicServiceStartIntent); 
      bindService(musicServiceStartIntent, musicConnection, Context.BIND_AUTO_CREATE); 
     } 

まず私のONSTART()メソッドです。私はonDestroy()メソッドでunbindservice()を呼び出しています。私の活動が破壊され、サービスが停止しました。

unbindService(musicConnection); 

マニフェストファイル宣言

<service android:name=".Services.MusicService"/> 

どのように私は私のサービスは活動が破壊された後もバックグラウンドで実行し続けることができます。私はStackOverflowのいくつかのスレッドを参照してくださいが、彼らは有用ではありません。 onStartCommand

+0

http://stackoverflow.com/questions/22895872/how-to-keep-a-service-with-listeners-alive-after -unbind-in-androidこれを試してみてください。これは私のために働いた –

+0

Ondestroy()のサービスをアンバインドしていないし、また、サービスを貼り付けて破壊しないでください。 – Aditi

+0

私はあなたの答えを試みました。私のサービスonDestroy()をアンバインドしないとエラーになります。 – saa

答えて

1

startForegroundでサービスを使用し、通知を使用してサービスを有効にすることができます。

+0

あなたの答えは必ずしも有用ではありません。私は自分の活動が実行中で破壊された後、このサービスを継続的に実行したい。 – saa

+1

サービスをフォアグラウンドで開始する必要があります –

+0

フォアグラウンドでサービスを開始するにはどうすればいいですか?私はliikeをこのstartService(intent)と呼んでいます。 – saa

0

return service.START_STICKYまたはservice.START_REDELIVER_INTENThttps://developer.android.com/guide/components/services.html#Foregroundを参照してください。 サービスから音楽を再生する音楽プレーヤーは、ユーザーがその操作を明示的に認識しているため、フォアグラウンドで実行するように設定する必要があります。ステータスバーの通知は、現在の曲を示すことができ、ユーザは音楽プレイヤーと対話するためのアクティビティを開始することができる。 サービスをフォアグラウンドで実行するように要求するには、startForeground()に電話してください。

あなただけのサービスを開始する必要が
+1

start_stickyは、Androidによって殺された後に活動が再現されることを意味します。サービスが殺されることを考慮してください。 –

+0

あなたの答えを試してみました。 – saa

+0

@alexeypolusov ** START_STICKY **はアクティビティとは関係ありません。 –

1

2

、アクティビティのライフサイクル

Intent intent = new Intent(context, SomeService.class); 
startService(intent); 

にそれを結合しないと、あなたのサービスがあなたのサービスが再作成されることを確認するSTART_STICKY/START_REDELIVER_INTENTを使用することができたときにAndroidシステムあなたのサービス殺す

@Override 
public int onStartCommand(final Intent intent, int flags, int startId) { 
    //other code 
    return START_STICKY; 
} 

あなたがあなたのサービスがシステムによって殺されることはありませんことを確認するService.startForeground(通知ID、通知)を使用することができ、必要に応じて

+1

私はまったく同じ答えを掲載しましたあなたは他の回答を読んでいますか? –

+0

他の回答と間違って何@alexeypolusov? – HendraWD

+0

あなたはstartForegroundを言及しましたか? – HendraWD

関連する問題