Android服务快速连续多次被杀后无法重启

Android服务快速连续多次被杀后无法重启,第1张

概述我已经构建了一个简单的 Android应用程序来解决烦人的问题.每当您加入我所在大学的无线网络时,您都会被重定向到登录页面,您必须提供您的学号和密码. 我已经构建了一个允许您输入详细信息的Android应用程序,然后使用意图过滤器WifiManager.NETWORK_STATE_CHANGED_ACTION注册接收器. 每当设备连接到大学网络时,都会使用登录详细信息进行HTTP post web 我已经构建了一个简单的 Android应用程序来解决烦人的问题.每当您加入我所在大学的无线网络时,您都会被重定向到登录页面,您必须提供您的学号和密码.

我已经构建了一个允许您输入详细信息的AndroID应用程序,然后使用意图过滤器WifiManager.NETWORK_STATE_CHANGED_ACTION注册接收器.
每当设备连接到大学网络时,都会使用登录详细信息进行http post webrequest.从而解决了被重定向的问题.

一切都很完美……然而在我的扩展测试中,我发现了一个非常奇怪的问题.当我按下“Go Power Master”应用程序闪电按钮一次然后打开设置>应用程序>运行我看到我的服务正在重启(以及许多其他服务,例如Facebook).大约30秒后,服务重新启动,一切都很好.

但是,如果我快速连续多次按下闪电按钮(3次或更多次),然后转到设置>应用程序>运行我不再看到我的服务.就像它从未尝试过重启一样. Facebook服务和其他服务通过正常重启阶段并最终成功.

有谁知道发生了什么?当我多次按下闪电按钮时,为什么我的服务会永远消失?

在你回答之前我知道我已经改变了我的应用程序以使用startForeground(),这在我的所有扩展测试中都能很好地工作.但这不是一个有效的解决方案,因为我不希望我的应用程序在状态栏中有持续的通知.

附:如果你想重新创建这个奇怪的问题https://github.com/ccoffey/NUIMWiFi,我的项目就在github上了

P.P.S. “Go Power Master”应用程序是Google Play上的免费应用程序,闪电按钮应该用于回收丢失的RAM?我猜它会迫使所有后台服务都死掉.无论如何,这肯定是它的表现.

编辑包含LogCat日志

好的,我已经部分回答了我自己的问题.以下是我的服务的LogCat输出过滤到仅包括IE.cathalcoffey.androID.我强调了重要的线条.事实证明,每次杀死服务时,其重启时间都会增加.最初它是135096ms,第二次我杀了服务它变成540384ms,最后一次我杀了服务它变成了2161536ms.

所以现在我知道为什么我的服务在快速连续多次被杀后似乎没有重启.我仍然不知道为什么Facebook服务每次被杀都会很快重启(没有增加重启时间).关于如何解决这个问题的任何想法?

05-08 09:52:20.997: I/ActivityManager(192): START   {act=androID.intent.action.MAIN cat=[androID.intent.category.LAUNCHER] flg=0x10000000 cmp=IE.cathalcoffey.androID/.MyActivity} from pID 3364 05-08 09:52:21.403: I/ActivityManager(192): displayed IE.cathalcoffey.androID/.MyActivity: +290ms (total +41s557ms) 05-08 09:53:01.888: I/ActivityManager(192): Killing proc 3330:IE.cathalcoffey.androID/10033: kill background 05-08 09:53:01.888: W/ActivityManager(192): Scheduling restart of crashed service IE.cathalcoffey.androID/.MyService in 135096ms 05-08 09:55:17.013: I/ActivityManager(192): Start proc IE.cathalcoffey.androID for service IE.cathalcoffey.androID/.MyService: pID=3633 uID=10033 gIDs={3003} 05-08 09:56:21.325: I/ActivityManager(192): Killing proc 3633:IE.cathalcoffey.androID/10033: kill background 05-08 09:56:21.333: W/ActivityManager(192): Scheduling restart of crashed service IE.cathalcoffey.androID/.MyService in 540384ms 05-08 10:05:21.747: I/ActivityManager(192): Start proc IE.cathalcoffey.androID for service IE.cathalcoffey.androID/.MyService: pID=3943 uID=10033 gIDs={3003} 05-08 10:17:20.786: I/ActivityManager(192): Killing proc 3943:IE.cathalcoffey.androID/10033: kill background 05-08 10:17:20.786: W/ActivityManager(192): Scheduling restart of crashed service IE.cathalcoffey.androID/.MyService in 2161536ms

好的,所以用facebook过滤LogCat会返回以下有趣的信息,同样有趣的东西是粗体.他们是怎么做到的?如何将此禁止逻辑合并到我的服务中.

05-08 10:47:15.896: I/ActivityManager(192): Killing proc 4530:com.facebook.katana/10077: kill background 05-08 10:47:15.896: W/ActivityManager(192): Scheduling restart of crashed service com.facebook.katana/.service.MediaUploadService in 24955ms 05-08 10:47:16.552: W/ActivityManager(192): Permission Denial: Accessing serviceComponentInfo{com.facebook.katana/com.facebook.katana.service.MediaUploadService } from pID=907,uID=10069 that is not exported from uID 10077 05-08 10:47:16.560: W/System.err(907): java.lang.SecurityException: Not allowed to stop service Intent { cmp=com.facebook.katana/.service.MediaUploadService } 05-08 10:47:17.263: W/System.err(907): java.lang.SecurityException: Not allowed to stop service Intent { cmp=com.facebook.katana/.service.MediaUploadService } 05-08 10:47:17.263: W/ActivityManager(192): Permission Denial: Accessing service ComponentInfo{com.facebook.katana/com.facebook.katana.service.MediaUploadService} from pID=907,uID=10069 that is not exported from uID 10077 05-08 10:47:17.778: W/System.err(907): java.lang.SecurityException: Not allowed to stop service Intent { cmp=com.facebook.katana/.service.MediaUploadService } 05-08 10:47:17.778: W/ActivityManager(192): Permission Denial: Accessing service ComponentInfo{com.facebook.katana/com.facebook.katana.service.MediaUploadService} from pID=907,uID=10069 that is not exported from uID 10077
解决方法 解决方案是在AndroIDManifest.xml中将exported =“false”添加到服务中 总结

以上是内存溢出为你收集整理的Android服务快速连续多次被杀后无法重启全部内容,希望文章能够帮你解决Android服务快速连续多次被杀后无法重启所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1129008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存