Android服务停止在某些设备上正常工作,例如OPPO Xioami MIUI vivio

时间:2019-04-25 09:28:19

标签: java android service

我正在使用前台服务来跟踪用户的位置,但是它在诸如OPPO VIVO和XIOAMI MIUI的少数设备上停止。

阅读一些文章后,我尝试了一些类似的操作 对于OPPO 1:打开启动管理器 2:关闭后台冻结,异常应用优化和打Optimization

我想在后台运行我的服务。

1 个答案:

答案 0 :(得分:0)

在所有中文设备中都会发生这种情况,因为它们使用自定义操作系统来优化电池性能。这就是为什么当应用被终止时,操作系统会在后台终止所有进程的原因。您需要做一些事情来使服务在后台运行。

首先已经启动了启动功能。 您也可以通过代码来实现。

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);
        }
    }

第二 您需要将应用锁定在最近的应用任务栏列表中,这样当他从任务栏中轻扫所有应用时,您的应用就不会被杀死/刷掉。

Lock your app

希望对您有帮助。