通知栏提示应用正在运行通知----如何屏蔽此通知

1.问题:打开应用,通知栏提示“xx应用”正在运行,且应用只要在运行,此通知一直显示,不会消失,手动也不能删除,除非杀死应用,如新浪财经的提示:

 2.此通知弹出逻辑

     关于前台服务:

    在系统内存资源不足的情况下,会优先杀掉低优先级的进程。对于只有service的进程,有些情况对于用户来说是可感知的app。往往不希望被系统所杀,比如正在听音乐。

    系统默认service都是后台的,可以通过startForeground()把该service提升到foreground优先级,那么adj便会成为PERCEPTIBLE_APP_ADJ(可感知的级别),这个级别的app一般不会轻易被杀。当用户不再听歌时,应该主动调用stopForeground(),将其优先级还原到后台,为用户提供更好的体验,相关API位于文件Service.java :

startForeground(int id, Notification notification)

stopForeground(boolean removeNotification)

以上两个方法进入AMS都是调用setServiceForeground();对于startForeground(),往往通过postNotification()来展示 一个通知;对于stopForeground(),当removeNotification=true,则通过 cancelNotification()来取消通知。

    作为前台service,必须要有一个status bar的通知,并且通知不会消失直到service停止或许主动移除前台优先级。

3.如果不想要这种通知显示出来,要怎么做?

    目前我们的做法是在ServiceRecord.java的postNotification()方法中,根据notification的channelId进队列前进行拦截: 

     目前没有找到比较合适的过滤方式,如过滤出音乐类应用的channelId不进行拦截从而正常显示,但是可以拦截掉市面上的大多数应用,如新浪财经等。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值