Android4.3通知栏里会显示“XX正在运行”问题的原因分析




    		    Android4.3通知栏里会显示“XX正在运行”问题的原因分析

这个问题一来影响了用户使用体验,二是会让用户怀疑应用是否在后台偷偷摸摸做一些“坏事”,需要马上解决才行。

第一反应是上网查查资料,看看同行是否已经有了对策,不过发现大家似乎也在摸索当中。与几位同事交流后,大家有以下几个猜测:

1、开机自启动的权限导致的问题。

2、使用Notification对象数量超出允许范围导致的问题。

3、多进程运行时架构导致的问题——本应用与一些主流应用同样使用了多个进程。

有了猜测,就可以验证了,于是分头行动去了。不过我对以上3个猜测持保留态度,因为这些猜测都只是凭印象,并没有什么依据,于是继续在网上找线索。不久在一个论坛看到个谷歌开发人员对这个新特性的说明(http://tieba.baidu.com/p/2490091314#frs_nav)。说明中提到这个新特性的加入是为了防止开发者滥用startForeground这个API而加入的,特别是针对“制作了一个异常的通知对象,使得通知管理器不显示该通知”这种情况。这个描述直接指向了应用中一段很常用的代码:

Notification nf = new Notification();
startForeground(Integer.MAX_VALUE, nf);

将空的Notification换成有正常内容——即可显示的Notification后,问题解决了。4.3这个新特性可以使Android系统更加安全,挺不错的。如果大家是想在不显示Notification的情况下解决这个问题,我劝大家还是不要费劲了,官方已经明确提出禁止此类行为了。

本文出自 “技术为基” 博客,请务必保留此出处http://williamhome.blog.51cto.com/7661398/1261602

更多相关文章
一周排行
  • html:<div id="container"> <div id="leftSide"> <p>aaaa</p> <p& ...
  • 变量和变量类型 变量是一块用来存储数据的内存区域,定义在PL/SQL块的declare区域 在定义变量时通常需要为变量指定一个数据类型,也可以在定义变量时为变量指定一个初始值. 变量的类型可以使任何SQL数据类型或者
  • C++操作xml没有标准库的支持,TinyXml是个不错的xml操作库,以前总是使用TinyXml读写xml,但是最近对大量xml进行读写时,速度真的是有点慢,特别是在调试时,每次启动读xml就要好长时间,由于Tin
  • 


    		    ObjectiveC之成魔之路2ObjectiveC 編程
    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 如果文章对您有所幫助,欢迎给作者捐赠,支持
  • Exercise gives you a feeling of achievement and of being in control. 锻炼给你成就感和掌控感. stricter严格的 persistence坚持
  • public RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext()); 一切都从这句代码开始... 跟着newRequ ...
  • 0x01. 在问题一(详见上文)中,获取文件后缀名$file_type = $_FIELS['file']['type'],通过和白名单比较,假如相同,则取上传文件的后缀名.上文说过,MIME头欺骗问题(这里不考虑重
  • 环境:RHEL6.4 + Oracle 11.2.0.4 步骤摘要:1.启动报错ORA-031132.查看alert日志查找原因3.根据实际情况采取合理的措施,这里我们先增加闪回区大小,把库启动起来4.制定对应的归档
  • 简述PAM原理 如果你已经对pam有所了解,请跳过,我知道的可能还不如你多.你不感兴趣也请跳过,因为不看这个也可配置. 用户 <-> vsftpd <-> PAM模块 <-> 用户 ...
  • 转自:Deit_Aaron的专栏 添加用户:useradd -m 用户名  然后设置密码  passwd 用户名 删除用户:userdel  -r  用户名   1. 在root权限下,useradd只是创建了一个用