XXX正在运行,点按即可了解详情或停止应用

本文探讨了Android手机上部分应用出现的前台服务通知影响用户体验的现象,分析了`startForeground`方法导致服务在前台运行的原因,并介绍了不同API级别下隐藏通知的策略。通过研究源码,提出了解决方案,包括在API 18以下传入空Notification,在API 18及以上利用服务启动和停止的技巧。然而,这些方法在某些Android版本上可能失效,且存在权限限制问题。
摘要由CSDN通过智能技术生成

一片文章不仅仅是理论的探讨,更多的是应该对实际问题的解决。 写这篇文字的目的是为了解决一个用户体验的问题,如下描述。

 

部分手机出现下面图片,影响用户体验

 

这里写图片描述

 

 

为什么会有如此现象呢?

网友们不停的吐槽,优酷、金山词霸等App都有如此现象,连微信、QQ都曾经有过。 哥们惊呆了,还是深深的挖掘一下吧!

void startForeground(int id, Notification notification); 使此服务在前台运行,提供正在进行的服务在此状态下向用户显示的通知。 默认情况下是后台服务,这意味着service在系统回收内存(比如在浏览器里显示大图片)的时候可以被kill掉。如果你比较在意这个service的挂掉,比如像后台音乐播放器这种突然挂了会影响用户的情况,就可以使用ForegroundService来提示用户。

startForeground

-> com.android.server.am.ActivityManagerService#setServiceForeground

-> com.android.server.am.ActiveServices#setServiceForegroundLocked

在其中先获取对应的ServiceRecord:

ServiceRecord r = findServiceLocked(className, token, userId);

r.foregroundNoti = n

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值