2016-08-01 67 views
0

在這裏我正在運行音樂播放服務。 此代碼段是我在onStart()我的活動即使在活動被破壞後,如何使服務保持活躍狀態​​?

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

第一的方法,我開始我的服務,然後綁定它。我在onDestroy()方法中調用unbindservice()。我的活動遭到破壞,服務停止。

unbindService(musicConnection); 

清單文件聲明

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

我怎能我的服務在後臺運行,甚至破壞活動後。我提到幾個StackOverflow的線程,但它們沒有幫助。

+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_STICKYservice.START_REDELIVER_INTENTonStartCommand

+1

start_sticky表示活動將在Android被殺後重新創建。考慮到服務可能會被終止 –

+0

嘗試了你的答案。不工作.. – saa

+0

@alexeypolusov ** START_STICKY **與Activity無關! –

1

參考https://developer.android.com/guide/components/services.html#Foreground。 從服務播放音樂的音樂播放器應設置爲在前臺運行,因爲用戶明確知道其操作。狀態欄中的通知可能會指示當前歌曲,並允許用戶啓動與音樂播放器交互的活動。 要請求您的服務在前臺運行,請致電startForeground()

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(notificationId,通知),以確保您的服務不會被系統殺死

+1

你閱讀其他的答案? –

+0

@alexeypolusov這有什麼錯? – HendraWD

+0

你提到startForeground其他答案? – HendraWD

相關問題