安卓:如何知道Commonsware的WakefulIntentService是否正在运行?

3
我有一个简单的问题:我在我的应用程序中使用commonsware的wakefulintentservice,我已经让它工作了,但是我如何知道WakefulIntentService是否仍在运行?例如,我是否可以在WakefulIntentService类中放置onDestroy并让其记录一些内容,或者是否有其他方法可以查看WakefulIntentService是否正在运行?
提前感谢!
1个回答

4
我正在使用commonsware的WakefulIntentService在我的应用程序中,我已经让它工作了,但是如何知道WakefulIntentService是否仍在运行?
如果你的意思是“它是否曾经运行过”,那么你需要观察它应该完成的工作是否正在进行。
如果你的意思是“它现在是否正在运行”,那么可以在DDMS中检查你的线程。我从来没有真正担心过这个问题。
当然可以,在WakefulIntentService类中放置一个onDestroy方法并记录一些内容。
更新: adb shell dumpsys activity services将列出活动服务。我没有尝试过使用WakefulIntentService,但据我所知,它应该会显示在此处。

@Merlin:我想到了另一个选项——请查看更新后的答案。 - CommonsWare
还有一个小问题:我可以从我的doWakefulWork方法中调用AsyncTask吗,还是应该避免这样做? - Xander
@Merlin:不需要这样做,因为doWakefulWork()已经在后台线程上运行。而且,一旦doWakefulWork()结束,设备可能会进入睡眠状态,Android也可能终止进程——其中任何一个都可能对您的后台线程造成不良影响。因此,我不建议从doWakefulWork()(或普通IntentServiceonHandleIntent())启动AsyncTask - CommonsWare
我建议不要在服务的 onDestroy() 方法中使用日志记录,因为不能保证其执行。 - Piovezan

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