I know that to run as a foreground service, you need to show a notification. My app runs a service as a foreground service, and it shows a notification.
However, if the user goes into Settings -> Apps- > My app -> and un-checks "show notifications", will the service continue to run as a foreground service?
I assumed that yes, it will continue to run as a foreground service.
However, I recently noticed my service was killed by the system, and saw this in the logcat:
Killing 2647:com.myapp.myapp:Service/u0a122 (adj 15): kill background
The service was killed, and it did not restart itself. This is on Android 4.4.2. Worst of all, onDestroy was not called, so I couldn't even release some wake-locks.
Run adb shell dumpsys activity services
and check the value of the isForeground
flag for your service.
* 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