我的应用程序中有一项服务,其他一些应用程序也有。根据我的习惯,我可以在设置->(运行)服务中很好地看到(并杀死)服务。但是:不是我的……
该服务本身是从 IntentService 扩展而来的。它通过 BroadcastReceiver 处理警报意图以及来自我的应用程序的消息并返回以执行一些工作。由于它对我的应用程序至关重要并保留一些远程网络会话和其他(读:“很多”)持久数据,因此我确实在主要活动中明确启动它
startService(new Intent(this, HeartBeatService.class));
在服务中,我什至使用
startForeground(NOTIFY_RUNNING, runNotification);
我的应用程序的其他活动仅使用bindService()使用该服务,工作起来就像一个魅力。
它真的is跑步。完美且始终如我所愿,即使活动因为 Android 认为它有好处而被 Android 杀死。
只是:我没有“看到”它正在运行。
我还尝试覆盖服务 onStartCommand() 以返回 START_STICKY,但没有任何改变。我知道,这个不应该在 IntentService 中被覆盖。
或者我只是想错了? IntentService“不同”吗?
谢谢你!
来自 Android 文档参考:
IntentService 是按需处理异步请求(表示为 Intents)的服务的基类。客户端通过startService(Intent)调用发送请求;该服务根据需要启动,使用工作线程依次处理每个 Intent,并在工作完成时自行停止。
您的服务仅在收到意图时才会运行,并在完成该意图要求其执行的操作后停止。
另外,我发现绑定到活动的服务不会显示在正在运行的服务屏幕中。
一旦您删除绑定,它们就会出现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)