本地服务或远程服务?
我有一个必须永久运行的后台服务。该服务只需与我的活动进行交互。本地服务或远程服务?
如何检查活动恢复如果服务仍在运行?在服务类中有没有比静态变量更好的可能性?
在单独的进程中使用远程服务(以延长服务生命周期)是否有利,以便在活动进程被终止时服务仍然存在?
我有一个后台服务必须 运行永久。
This is not possible。用户或Android会在某个时候终止您的服务。请重新考虑你的架构。
如何检查活动恢复如果 该服务仍在运行?
一般来说,你没有。
在服务类中有比静态变量更好的可能性吗?
如果用户或Android终止您的服务,那么这将不起作用。
是它的优势,在一个单独的进程中使用远程 服务(以 延长使用寿命的时间),以便当 活动过程中被杀死的 服务还活着?
远程服务与活动被销毁后服务是否运行无关。如果调用startService()
,运行服务,独立于任何活动的,直到:
- 你从一个活动叫
stopService()
- 服务调用
stopSelf()
- 的Android终止
- 用户终止服务通过设置应用程序服务
- 用户通过“任务杀手”终止服务(Android 2.1及更低版本,至少)
以及如果后台服务仍在执行其工作,它希望用户如何通知活动再次出现? – Sney 2010-07-22 13:57:58
@Snej:我不明白你的问题,对不起。 – CommonsWare 2010-07-22 23:52:44
对不起,我最后的评论有点混乱,直到我意识到它。问题是如何确定用户何时重新启动应用程序,以确定后台服务是否仍在运行或已被终止。 通过Macarse的回答一个意图可以抛出服务。但是,我怎么才能知道该服务是重新启动还是仍在运行? – Sney 2010-08-20 20:45:47
为什么你想知道服务是否正在运行? 如果你需要一些东西,只要扔一个Intent
,如果它没有运行,它将从意图开始。
与第二个问题关系:
您的服务不会“死”的时候你的活动关闭。
在startforeground()
开始服务。它会增加服务的时间。
'adb bugreport'告诉我,我的服务崩溃太多并被销毁 – OneWorld 2010-12-21 14:31:02