在我的应用uPod中,我有几个意图服务执行一次性任务,如下载剧集或同步剧集状态。我将这些任务作为前台服务运行,并在Android的状态栏中显示通知。有时,当服务运行时屏幕关闭时,虽然服务已完成(在任务管理器中进行了检查),但不会删除通知。
我不确定在这些情况下,由于缺乏可用资源,服务是否优雅或已被Android杀死(将为此添加日志记录)。然而,根据我的代码,我希望在可能的情况下删除通知。但在这些情况下,摆脱通知的唯一可能是通过启动任务管理器并强制终止应用程序。
有没有人知道,如何确保在每种可能的情况下删除通知?
这是我的伪代码(原始代码在Scala中):
class SyncService extends IntentService("SyncService") ... { ... void onHandleIntent(Intent intent) { final WakeLock wakeLock = powerManager.acquire(AndroidPowerManager.PARTIAL_WAKE_LOCK); wakeLock.acquire(); try { startForeground(notificationId, notification); try { sync(); } finally { stopForeground(true); } } finally { wakeLock.release() } } ... }