我的应用程序中有一项服务,就像其他一些应用程序一样。根据我习惯,我可以在设置中很好地看到(并杀死)服务 - > (运行)服务。但是:不是我的......
服务本身是从IntentService扩展的。它通过BroadcastReceiver处理报警意图以及来自我的应用程序的消息,然后回来做一些工作。由于它对我的应用程序至关重要,并保留了一些远程网络会话和其他(读取:“很多”)持久性数据,我明确地在主要活动中启动它
startService(new Intent(this, HeartBeatService.class));
在服务中,我甚至使用
startForeground(NOTIFY_RUNNING, runNotification);
我使用该服务的其他应用程序仅使用bindService(),就像魅力一样。
正在运行。完美而永远,正如我所希望的那样,即使活动被Android杀死,因为无论机器人认为它有什么好处。
只是:我没有“看到”它正在运行。 我还尝试覆盖服务onStartCommand()以返回START_STICKY,但没有任何改变。我知道,不应该在IntentService中覆盖这个。
或者我只是想错了? IntentService“不同”吗?
谢谢!
答案 0 :(得分:5)
从Android文档参考:
IntentService是服务的基类,可根据需要处理异步请求(表示为Intents)。客户端通过startService(Intent)调用发送请求;根据需要启动服务,使用工作线程依次处理每个Intent,并在工作失败时自行停止。
您的服务只会在收到意图时运行,并在完成意图后停止运行。
此外,我发现绑定到活动的服务不会显示在正在运行的服务屏幕中。
删除绑定后,它们会显示出来。