我终于找到了解决方案!我从服务中删除了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版本将按预期运行,如果您从“最近使用的应用”页面中删除该应用,该服务不会崩溃。



