2016-08-01 92 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

相关问题