安卓服务正在运行,但在“运行服务”中没有显示出来。

5

我在我的应用程序中有一个服务,其他一些应用程序也有类似的服务。从我所习惯的来看,在设置->(运行)服务中可以很好地查看(和终止)服务。但是:我的服务不在其中...

该服务本身是从IntentService扩展而来的。它通过BroadcastReceiver处理Alarm Intents以及来自我的应用程序和返回的消息以执行某些工作。由于它对我的应用程序至关重要并保持了一些远程Web会话和其他(即:“大量的”)持久数据,因此我在主活动中明确启动它。

startService(new Intent(this, HeartBeatService.class)); 

在服务中,我甚至使用
startForeground(NOTIFY_RUNNING, runNotification);

我的其他应用程序活动只是使用bindService()来使用该服务,像魔法一样运行良好。

它真的在运行。完美无缺,即使活动被Android杀死,因为无论Android认为什么对它有益,它总是如我所愿地运行。

只是:我看不到它在运行。

我还尝试重写服务的onStartCommand()方法来返回START_STICKY,但没有任何变化。我知道,这个方法不应该在IntentService中被覆盖。

或者我可能有些想法错误吗?IntentService是"不同"的吗?

谢谢!

1个回答

5

根据 Android 文档的参考:

IntentService 是一个处理异步请求(表示为 Intents)的服务基类。客户端通过 startService(Intent) 调用发送请求;服务在需要时启动,使用工作线程逐个处理每个 Intent,并在没有任务时停止自身。

您的服务仅在接收到意图时运行,并在完成意图所需的操作后停止。

此外,我发现绑定到活动的服务将不会显示在正在运行的服务屏幕上。

只有当您取消绑定它们时,它们才会出现。


阅读和理解所写的内容有时应该会有所帮助...我想我只是想错了。我将重构类为标准服务(Service),并在onStartCommand()中从新线程Runnable中调用我的旧IntentService.onHandleIntent()。让我们看看会发生什么...稍后会报告... - Oliver
1
重构为服务而不是IntentService,功能相同,并且现在在应用程序服务中显示;)但我真的很想知道,因为覆盖onStartCommand()并返回START_STICKY应该已经完成了,但是我不知道。无论如何,感谢您的指引! - Oliver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接