如何启动并绑定到服务?

时间:2015-10-07 20:14:01

标签: java android service

我认为并希望这不是旧的常见问题。 这就是我想要的:

  1. 使用setForeground()设置启动服务S的活动A(具有持久通知的服务);
  2. A绑定到S以使用公共方法控制它;
  3. 用户关闭A(onDestroy)但该服务仍必须正在运行;
  4. 用户打开A,A发现服务S已经启动,只是重新绑定到它。
  5. 我该怎么做?

2 个答案:

答案 0 :(得分: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明确规定何时停止该服务。

答案 1 :(得分:1)

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

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

当您将其设置为startForeground时,销毁绑定到该服务的Activity不会销毁它,因此没有问题。

现在只需绑定到活动的onResume中的服务,并在onPause或onStop中取消绑定(无论哪种最适合,都可以在不同的设置中使用)。