在取消选中“显示通知”后,服务是否仍在前台运行?

时间:2014-05-12 18:13:57

标签: android service notifications foreground

我知道要作为前台服务运行,您需要显示通知。我的应用程序将服务作为前台服务运行,并显示通知。

但是,如果用户进入设置 - >应用 - >我的应用 - >并取消选中“显示通知”,服务是否会继续作为前台服务运行?

我认为是的,它将继续作为前台服务运行。

但是,我最近注意到我的服务被系统杀死了,并在logcat中看到了这个:

杀戮2647:com.myapp.myapp:服务/ u0a122(adj 15):杀死背景

该服务已被终止,并且没有重新启动。这是在Android 4.4.2上。最糟糕的是,没有调用onDestroy,所以我甚至无法释放一些唤醒锁。

1 个答案:

答案 0 :(得分:0)

是; "显示通知"该服务仍在前台运行未被攻击。

运行adb shell dumpsys activity services并检查服务的isForeground标记的值。

  * ServiceRecord{e66dea9 u0 com.example.foregroundservice/.ForegroundService}
    intent={cmp=com.example.foregroundservice/.ForegroundService}
    packageName=com.example.foregroundservice
    processName=com.example.foregroundservice:backgroundproc
    baseDir=/data/app/com.example.foregroundservice-2/base.apk
    dataDir=/data/user/0/com.example.foregroundservice
    app=ProcessRecord{254dd51 14363:com.example.foregroundservice:backgroundproc/u0a65}
    isForeground=true foregroundId=101 foregroundNoti=Notification(pri=0 contentView=null vibrate=null sound=null tick defaults=0x0 flags=0x40 color=0x00000000 vis=PRIVATE)
    createTime=-55s70ms startingBgTimeout=--
    lastActivity=-55s70ms restartTime=-55s70ms createdFromFg=true
    startRequested=true delayedStop=false stopIfKilled=false callStart=true lastStartId=1

兼容性(使用官方Android模拟器)

不工作:

  • 4.0.2("显示通知"设置不可用)

工作:

  • 4.1.2
  • 4.2.2
  • 4.3.1
  • 4.4.2
  • 5.0.2
  • 5.1.1
  • 6.0
  • 7.0
  • 7.1