Служба Android перестает работать на некоторых устройствах, таких как OPPO Xioami MIUI vivio - PullRequest
0 голосов
/ 25 апреля 2019

Я использую сервис переднего плана для отслеживания местоположения пользователя, но он останавливается на нескольких устройствах, таких как OPPO VIVO и XIOAMI MIUI.

Прочитав статью, я попробовал несколько вещей, таких как Для OPPO 1: Включение Startup Manager 2: Отключение фонового замораживания, ненормальная оптимизация приложений и Doze

Я бы хотел запустить свои службы в фоновом режиме.

1 Ответ

0 голосов
/ 25 апреля 2019

Ну, это происходит на всех китайских устройствах, потому что они используют пользовательские ОС для оптимизации работы батареи.Вот почему ОС убивает каждый процесс в фоновом режиме, когда приложение убивается.Вам нужно сделать несколько вещей, чтобы ваша служба работала в фоновом режиме.

Сначала включите функцию запуска, как вы уже это сделали.Вы также можете достичь этого с помощью кода.

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

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...