在Oppo和Vivo手机上,当我从最近使用的应用程序中删除我的应用程序时,后台服务会停止,并且广播接收器也无法工作。
在Oppo和Vivo手机上,当我从最近使用的应用程序中删除我的应用程序时,后台服务会停止,并且广播接收器也无法工作。
我曾经遇到过Oppo、Vivo、Mi等手机的同样问题,
解决方法:我在我的应用程序中添加了自启动权限,就像这样,它起作用了。
在解决了这个问题之后,我的应用程序在后台运行一段时间后会被冻结/关闭,因为进入了DOZE模式。
解决方法:对于这种情况,这个方法有效,在任何设备上都可以在后台运行我的应用程序。在进行以上操作之后,执行以下步骤:
intent.setClassName("com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerConsumptionActivity"); startActivity(intent);
调用以上意图,它将重定向到电池选项,“从“节能助手”中禁用背景冻结、异常应用程序优化和Doze”
注意:一旦您调用以上意图,您可能会得到不同的选项来关闭省电选项。
isIgnoringBatteryOptimizations()
时,它仍然总是返回false,并且如果我从最近的列表中删除该应用程序,它仍然会被杀死。最奇怪的是,页面Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
不存在!看起来OPPO没有遵循有关“DOZE模式”的标准,他们只是粗暴地杀死最近的应用程序。 - Lynch Chen是的,您需要返回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();
}
}
是的。
如果您希望服务重新启动,则需要将其配置为“粘性”:
https://developer.android.com/reference/android/app/Service.html#START_STICKY
完成此操作后,请按照接受的答案进行操作,它将起作用。
为了让您的应用程序在这些手机上正常工作,您需要要求用户在设置中将其添加到白名单中。这些手机上的自定义操作系统只允许像WhatsApp、FB等已列入白名单的应用程序在后台运行,其他应用程序必须手动添加到白名单中。