Wednesday, April 4, 2018

onTaskRemoved() not getting called when Home press & kill the app

Leave a Comment

This question not duplicate of onTaskRemoved() not getting called in HUAWEI and XIOMI devices

Problem:

When I press home button & kill the app onTaskRemoved() (Service class override method) - not called.

If I press back button & kill the app --> onTaskRemoved() called perfectly

This issue happen in Android lollipop versions & oreo versions

MyService.class -> Manifest declaration

    <service android:name=".MyService"         android:label="MyService"         android:stopWithTask="false"         android:enabled="true"         android:exported="true"         /> 

I already used the return START_STICKY; in onStartCommand()

Tested devices

Lenovo, Samsung - lollipop version

Samsung - oreo version

Any suggestions or comments are welcome. Your small tips will help to fix this huge issue.

1 Answers

Answers 1

Based on your use case, you should be able to meet the criteria for the White listing on Android N and above. You can follow this link to Whitelist your app. By requesting this permission, you can avoid all the restrictions implied by Doze mode and Android O.

For Lollipop: Certain manufacturers using cyanogenmod or other custom implementation, could have impact on the intended behavior of START_STICKY. Workaround in this case would be to rely on onDestroy() method of service to:

  1. Restart the service.
  2. Trigger an AlarmManager which will trigger after few seconds and start the service.

If you use approach 2:

On normal devices where the START_STICKY behaves as intended, you can use the AlarmManager to check if service is running by:

  1. Maintain a static variable in service to check if service has been started
  2. Cancel the AlarmManager onStartCommand() of the service.
If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment