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

更多相关文章
一周排行