2015-10-07 49 views
-3

我想,并希望这不是老惯了的问题。 这就是我想要的:如何启动并绑定到服务?

  1. 启动与setForeground()设置一个服务S的活性的(即与永久通知服务);
  2. A绑定到S以公共方法控制它;
  3. 用户关闭A(onDestroy),但该服务必须仍在运行;
  4. 用户打开A,A发现服务S已经开始并且简单地重新绑定到它。

我该怎么做?

+0

您是否阅读过文档? http://developer.android.com/guide/components/bound-services.html – FrankMonza

回答

1

我该怎么做?

第4步是相同的步骤#1和步骤#2,所以你只是做同样的事情,在这两种情况下:通话双方startService()bindService()。在你的情况下,你的startForeground()工作onCreate()服务(而不是onStartCommand()),因为你不需要多次(一个startService()呼叫)。并且务必明确规划何时您将通过stopService()stopSelf()only have the service running when it is actively delivering value to the user停止该服务。

+0

是的,我的错。我删除了我的意见,以避免您认真阅读(因为我现在已经解决),但你已经回答了。无论如何,我错误地认为onBind()方法再次被调用。现在,它的工作,谢谢。 – VanDir

1

如果您在服务已经运行时调用startService,则什么都不会发生。服务会自动创建为单例,因此框架将只处理1个实例。

在您的服务的onCreate()中,请致电startForeground(int id, Notification notif)

正如你将它设置为startForeground,摧毁一个绑定到该服务不会破坏它的活动,所以没有问题存在。

现在只需绑定到服务在您的活动的onResume,并在onPause或解除绑定的onStop(无论最适合你的,都可以在不同的设置使用)。