android通知栏被进程杀死,Android 应用被杀后Notification不取消问题及应用深杀和浅杀时Service生命周期情况...

阅读: 评论:0

android通知栏被进程杀死,Android 应用被杀后Notification不取消问题及应用深杀和浅杀时Service生命周期情况...

android通知栏被进程杀死,Android 应用被杀后Notification不取消问题及应用深杀和浅杀时Service生命周期情况...

项目中有如下需求:后台service进行导入操作,要更新Notification。当运行系统清理使应用被杀时,Notification无法取消,仍然在通知栏显示。为解决这个问题进行了如下探索:

首先想到利用service的startForeground()来更新通知栏,这样当应用被杀掉时候Notification可以一起被去掉。但针对项目的需求:service可以同时导入多个文件,并且会对应显示多个通知。这种情况下用service.startForeground()更新通知栏时候,当应用被杀时候之后cancel掉最后一次调用startForeground对应id的Notification,而其他通知仍然不能被取消。

继续探索用其他方式取消通知栏:在进程被杀掉的时候,会调用service的哪些生命周期函数呢?service的onDestroy()方法只有在调用Context的stopService()或Service的stopSelf()后才会被调用,在应用被杀时候Service的onDestroy()不会被执行。

我们发现service的 onTaskRemoved()方法,该方法何时被调用呢?方法的注释说明是这么写的:

/**

* This is called if the service is currently running and the user has

* removed a task that comes from the service's application. If you have

* set {@t.pm.ServiceInfo#FLAG_STOP_WITH_TASK ServiceInfo.FLAG_STOP_WITH_TASK}

* then you will not receive this callback; instead, the service will simply

* be stopped.

*

*@paramrootIntentThe original root Intent that was used to launch

* the task that is being removed.

*/

public voidonTaskRemoved(Intent rootIntent) {

}

注释表明onTaskRemoved()方法在当用户移除应用的一个Task栈时被调用。也就是当用户在最近任务界面把该应用的一个task划掉时&#

本文发布于:2024-02-01 06:32:03,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170674032334571.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:被杀   生命周期   进程   情况   通知
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23