积分 121, 距离下一级还需 79 积分 积分 121, 距離下一级还需 79 积分
|
|
||
|
|
||
|
|
||
|
|
||
积汾 121, 距离下一级还需 79 积分 积分 121, 距离下一级还需 79 积分
|
|
||
积分 121, 距离下一级还需 79 积分 积分 121, 距离丅一级还需 79 积分
|
|
||
积分 193, 距离下一级还需 7 积分 积分 193, 距离丅一级还需 7 积分 |
|
||
|
|
||
|
|
||
|
|
||
積分 121, 距离下一级还需 79 积分 积分 121, 距离下一级还需 79 积分
|
|
||
关于Android Service的内容本人上一篇转载的博客非常详细,有需要的可以到下面链接查看:
本文是根据其中某一个知识点扩展出来的
我们都知道,Service几乎都是在后台运行的所以Service的系统优先级还是比较低的,当系统出现内存不足情况时就有可能回收掉正在后台运行的Service。如果你希望Service可以一直保持运行状态而不会由於系统内存不足的原因导致被回收,那么就要提高Service的优先级而提高优先级的方法有多种,其中一种就是考虑使用前台Service
不多说,直接上玳码非常的简单,不解释:
有留心的朋友会发现每当启动该前台Service的时候,手机都会收到一个通知下拉通知栏,会看到一个通知如“XXService囸在运行”,如下图:
查看文档知道,当SDK<18时系统不会有该通知,当SDK>=18时系统有显示该通知。系统显示该通知应该是为了防止滥用“startForeground”。
那如果我就是不想显示该通知给用户?怎么关闭通知栏搞
本人之前因接触过一些通知相关的内容,于是大胆假设:把2个同进程的Service都用startForeground设置为前台进程,但他们使用相同的Notification
ID,那么他们只会产生一个通知然后把其中一个Service取消前台效果,那么就会把通知关闭剩下的那个Service就是前台Service了,而且通知栏没有通知
有了假设,当然就要验证是否可行~~
先看最后要保留的那个Service的代码:
// 的会在通知栏显示service正在运行,这里不要让用户感知所以这里的实现方式是利用2个同进程的service,利用相同的notificationID再看那个辅助消除通知的Service的代码,非常的简单:
代码就这麼多上面大体思路是:一个最后保留的MyService,一个辅助消除通知的AssistService, 利用
运行上面的代码发现通知栏真的没有显示通知,成功了 还要看看兩个Service的生命周期是否正常,从日志Log可以看出两个服务正常,最后只剩下MyService这个服务而AssistService会destroy掉:
如果那位大神有更好的方法,希望能分享分享小弟先谢过了!!
|
|
|
|
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。