从最近删除应用程序时后台服务停止

Posted

技术标签:

【中文标题】从最近删除应用程序时后台服务停止【英文标题】:Background Service Stop when removing app from recent 【发布时间】:2018-11-10 08:59:52 【问题描述】:

后台服务停止,从最近的 oppo 和 vivo 手机中删除我的应用程序时,广播接收器在这种情况下也无法正常工作。

【问题讨论】:

很高兴知道。谢谢。 主要是因为他们希望自己的手机在电池消耗方面表现出色,用户会根据电池消耗来判断他们的公司,而不是应用在其上运行的好坏 请发布您的清单 如何解决问题。我在广播接收器中面临同样的问题 @YogeshPaliyal 您的解决方案是否也适用于最新的 android 版本?报警管理器在最新的 Android 版本中没有问题吗? 【参考方案1】:

我在 Oppo、Vivo、Mi 等手机上遇到过同样的问题,

    从最近的应用程序中删除后,应用程序被杀死,甚至服务也被杀死

解决方案:我在我的应用程序中添加了 this 之类的自动启动权限,它起作用了。

    解决此问题后,由于打盹模式,我的应用程序在后台运行一段时间后被冻结/杀死 解决方案:对于这种情况this 工作,现在我的应用程序在任何设备的后台运行

    完成上述操作后:

intent.setClassName("com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerConsumptionActivity"); 开始活动(意图);

调用上述意图,它会将您重定向到电池选项,“禁用后台冻结,异常应用优化和打盹来自\“节能器->youAPP”

注意:调用上述意图后,您可能会获得不同的选项来关闭省电选项。

【讨论】:

它不适用于 Vivo 设备。你能帮帮我吗? 好的,请注明您使用的设备,我可以进一步提供帮助 请更新您的错误信息,或在聊天中 ping 我 试过了,但是在oppo上不行。还有其他解决方案吗? 您面临的问题是什么【参考方案2】:

是的,您必须返回 START_STICKY;

请参考此链接:

https://www.tutorialspoint.com/android/android_services.htm

示例:

public class MyService extends Service 

@Nullable

@Override
   public IBinder onBind(Intent intent) 

  return null;
   

   @Override
   public int onStartCommand(Intent intent, int flags, int startId) 



  // Let it continue running until it is stopped.

Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
      return START_STICKY;

   

   @Override
   public void onDestroy() 

 super.onDestroy();

Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();

 

【讨论】:

所提到的设备行为不同,因为这个 START_STICKY 不起作用,我提到的解决方案作为答案【参考方案3】:

您需要让您的用户在他们的设置中将您的应用列入白名单,这样它才能在这些手机上运行。这些手机上的自定义操作系统只允许whatsapp、fb等白名单应用在后台运行,其他应用必须从设置中手动加入白名单

【讨论】:

甚至广播接收器?【参考方案4】:

是的。 如果您希望服务重新开始,您需要将其配置为“粘性”: https://developer.android.com/reference/android/app/Service.html#START_STICKY

这样做后,按照接受的答案,它会工作。

【讨论】:

所提到的设备行为不同,因为这个 START_STICKY 不起作用,我提到的解决方案作为答案

以上是关于从最近删除应用程序时后台服务停止的主要内容,如果未能解决你的问题,请参考以下文章

从最近的应用程序关闭应用程序时服务停止

当应用程序从后台删除时停止本地通知

当应用程序从后台删除时,如何停止 JobService Scheduled?

Android,从“最近的应用”中删除应用时取消通知

当应用程序从堆栈中被杀死时,后台服务停止

停止本地通知