栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

服务崩溃并重新启动

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

服务崩溃并重新启动

我终于找到了解决方案!我从服务中删除了AlarmManager,该服务不再兑现,但我必须使用它

问题是用户从“最近使用的应用程序”中删除该应用程序后,服务崩溃,因此我所做的是防止该应用程序出现在该窗口中。将以下内容作为以下项的子项添加到您的AndroidManifest.xml中:

<activity>

android:excludeFromRecents="true"

现在,当用户从您的应用程序退出时,它不会出现在最近的应用程序窗口中,这意味着系统在您退出活动后立即将其杀死,因此不会浪费任何资源。

PS:别忘了将服务设置为在单独的进程中运行,将以下内容添加到您的AndroidManifest.xml中,作为

<service>

android:process=":remote"

编辑-找到真正的解决方案

经过大量研究和研究(数月的研究),我深入研究了android API,这是一个发现,这是仅在API 16+上才出现的预期行为,android
arquiteture的更改改变了PendingIntents的方式是由系统广播的,因此Google添加了标志

FLAG_RECEIVER_FOREGROUND
,您必须将此标志传递给要用作参数的intent
PendingIntent.getBroadcast()
,这是一个示例:

if(Build.VERSION.SDK_INT >= 16)     //The flag we used here was only added at API 16        myIntent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);    //use myIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); if you want to add more than one flag to this intent;PendingIntent pi = PendingIntent.getBroadcast(context, 1, myIntent, 0); // the requestCode must be different from 0, in this case I used 1;

早于API 16的Android版本将按预期运行,如果您从“最近使用的应用”页面中删除该应用,该服务不会崩溃。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573876.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号