2016-08-01 3 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 이것을 시도하십시오. 이들의 OnDestroy()에서 서비스 바인딩을 해제하고 또한 서비스가 끈적하게 한 후 파괴하지 않는 –

+0

날 위해 일했습니다. – Aditi

+0

나는 당신의 대답을 시도했다. 내 서비스 onDestroy()를 바인딩 해제하지 않으면 오류가 발생합니다. – saa

답변

1

알림을 사용하여 startForeground에서 서비스를 사용하면 서비스를 유지할 수 있습니다.

+0

예 .. 당신의 대답은 항상 도움이되지 않습니다. 나는 내 활동이 계속되고 파괴 된 후에이 서비스를 계속 실행하고 싶다. – saa

+1

포 그라운드에서 서비스를 시작해야합니다. –

+0

포 그라운드에서 서비스를 시작하는 방법은 무엇입니까? 나는이 전화를이 startService (intent)라고 부른다; – saa

0

return service.START_STICKY 또는 service.START_REDELIVER_INTENThttps://developer.android.com/guide/components/services.html#Foreground을 참조하십시오. 사용자가 해당 작업의 명시 적으로 인식하고 있기 때문에 서비스에서 음악을 재생 음악 플레이어는 포 그라운드에서 실행되도록 설정해야합니다. 상태 표시 줄의 알림은 현재 노래를 나타낼 수 있으며 사용자가 음악 플레이어와 상호 작용할 활동을 시작할 수 있습니다. 포 그라운드에서 실행되는 서비스가, startForeground()을 부르는 는 요청합니다.

당신은 단지 서비스를 시작해야
+1

start_sticky 그것이 안드로이드에 의해 살해 된 후 그 활동이 다시 생성됩니다 것을 의미합니다. 서비스가 –

+0

을 살해 될 수 있다는 것을 고려 답변 시도 ..! 작동하지 않습니다 .. – saa

+0

@alexeypolusov ** START_STICKY ** –

1

에서

2

, 활동주기

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

에 바인딩하지 않습니다 그리고 당신의 서비스는 서비스가 다시 생성됩니다 있는지 확인 START_STICKY/START_REDELIVER_INTENT을 사용할 수 있습니다 때 안드로이드 시스템 서비스 죽일

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

당신이 당신의 서비스가 시스템에 의해 살해되지 않습니다 있는지 확인 Service.startForeground (notificationId, 통지)를 사용할 수 있습니다 필요한 경우

+1

당신이 다른 답변을 읽습니까? –

+0

가 – HendraWD

+0

당신이 startForeground을 언급 했습니까? 다른 답변 뭐가 잘못 @alexeypolusov? – HendraWD