通知栏消息无法拉起应用问题分析.docx

通知栏消息无法拉起应用问题分析.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
通知栏消息无法拉起应用问题分析

通知栏消息无法拉起应用问题分析统一通知平台--陈建波现象描述:在和平安证券联调过程中,发现了这个现象,当应用在前台按back键后,应用自杀,通知栏的推送信息还在,这个时候点击推送通知,应用无法被拉起问题机型:Android5.0所有手机部分Android4.4机型:小米4以及魅族MX4解决过程:1.1、测试平安证券在5.0系统手机运行情况,平安证券在前台运行时候,进程运行情况如下按back键后,进程运行情况如下:也就是说平安证券在按back键的时候应用主进程自杀,但是不杀死push进程1.2、点击通知栏消息的动作,相当于通过push进程拉起应用主进程,在Android4.0(除部分深度定制机型:小米4和MX4)以及Android6.0系统可以正常拉起,说明Android5.0做了特殊处理我们来看下Android4.4系统拉起应用LocalService过程:Android5.0系统拉起应用的动作和Android4.4相同,但是start LocalService并没有成功启动:因此得出结论:Android5.0系统对同应用跨进程之间的startservice做了限制,如果没有在清单文件Androidmanifest.xml中声明服务,会阻止这种启动方式,从而阻止主进程的拉起1.3、解决方案:在清单文件Androidmanifest.xml中声明serviceservice android:name=”com.mrocker.push.service.LocalService” ?android:exported=”true”/测试结果:Android5.0终端可以通过通知栏正常拉起应用遗留问题:小米4,魅族MX4,Letv X501依然不能正常拉起遗留问题解决2.1、测试魅族MX4:前提:service android:name=”com.mrocker.push.service.LocalService” ?android:exported=”true”/添加到清单文件中抓取log发现:结论:魅族MX4在系统中对启动service做了更大的限制即使在清单文件中声明了service,如果应用主进程已经被killed,跨进程之间依然不能通过startservice拉起应用主进程,并且小米4,魅族MX4,Letv X501为了防止应用的唤醒过于频繁对广播接收权限也做了深度限制一个新方案:把广播接收器放到push进程,然后通过context.startActivity(launchIntent)就可以启动应用主进程2.2、解决方案:将PushServiceReceiver广播接收器放到push进程中? ? ? ? receiverandroid:name=com.mrocker.push.service.PushServiceReceiverandroid:exported=trueandroid:process=:push 测试结果:小米4,魅族MX4,Letv X501可以通过点击通知栏正常拉起应用遗留问题:PushServiceReceiver原来跑在主进程,现在跑在push进程,静态变量无法共享到主进程中,从而导致了两个问题:(1)消息的下发失败(2)调试log无法打开遗留问题解决3.1、解决方案:只将点击通知栏消息广播的接收器放在push进程,其他的广播依然放在主进程新建一个点击广播接收器类:PushNotificationClickReceiver.class并将该接收器声明在push进程中:receiverandroid:name=com.mrocker.push.service.PushNotificationClickReceiverandroid:exported=trueandroid:process=:push测试结果:小米4,魅族MX4,Letv X501可以通过点击通知栏正常拉起应用遗留问题:无至此:通知栏消息无法拉起应用问题得到彻底解决4、全文总结:4.1、Android5.0系统对同应用跨进程startservice做了权限控制,必须在清单文件中声明4.2、部分深度定制的Android系统对同应用跨进程的startservice做了更大限制,即使在清单文件中声明了也无法启动4.3、context.startActivity(launchIntent)的方式在同应用跨进程间没有做限制,但是必须有界面显示4.4、即使是同一应用,跨进程之间静态变量也不能共享内存

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档