我正在使用前台服务来跟踪用户的位置,但它在OPPO VIVO和XIOAMI MIUI等少数设备上停止了。
在读了一些文章后,我尝试了一些东西,比如OPPO 1:打开Startup Manager 2:关闭后台冻结,异常应用优化和打瞌睡
我想在后台运行我的服务。
发布于 2019-04-25 17:38:14
嗯,这在所有的中国设备上都会发生,因为他们使用定制的操作系统来优化他们的电池性能。这就是为什么当应用程序被终止时,操作系统会在后台终止每个进程。你只需要做几件事就可以让你的服务在后台运行。
首先打开启动功能,因为你已经这样做了。您也可以通过代码来实现这一点。
private void keepServicesInChineseDevices() {
Intent intent = new Intent();
String manufacturer = android.os.Build.MANUFACTURER;
switch (manufacturer) {
case "xiaomi":
intent.setComponent(new ComponentName("com.miui.securitycenter",
"com.miui.permcenter.autostart.AutoStartManagementActivity"));
break;
case "oppo":
intent.setComponent(new ComponentName("com.coloros.safecenter",
"com.coloros.safecenter.permission.startup.StartupAppListActivity"));
break;
case "vivo":
intent.setComponent(new ComponentName("com.vivo.permissionmanager",
"com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
break;
}
List<ResolveInfo> arrayList = getPackageManager().queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
if (arrayList.size() > 0) {
AppDataHolder.getSession(MyApplication.getAppContext()).setPermissionForChineseDevices(true);
startActivity(intent);
}
}其次,您需要将应用程序锁定在最近的应用程序托盘列表中,这样当他从托盘中滑动所有应用程序时,您的应用程序就不会被杀死。

我希望它能对你有所帮助。
https://stackoverflow.com/questions/55845994
复制相似问题