Запуск службы переднего плана в китайских ПЗУ - PullRequest
0 голосов
/ 29 ноября 2018

Я сделал службу переднего плана, чтобы постоянно сканировать устройства BLE вокруг меня.По какой-то причине он работает безупречно на моем штатном Android-устройстве Google pixel, а также на Samsung S9 +.

Но недавно я протестировал приложение с китайским ПЗУ (Oneplus 6T, Xiaomi Poco F1), и через несколько минут служба переднего плана, кажется, была там убита.Я использовал workmanager для перезапуска службы, но приложение не перезапускается, и вместо этого я получаю отчет об ошибке для приложения.

Также на устройствах с китайским ПЗУ ниже android 8.0 (Xiaomi redmi 3s prime) простой сервис работать не будет, мне тоже нужно использовать там сервис переднего плана.Есть ли решение этой проблемы?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Простым подходом было бы попросить пользователя поместить ваше приложение в неоптимизированные приложения, открыв настройки оптимизации батареи при запуске вашего приложения. Используйте приведенный ниже код, чтобы открыть настройку:

    Intent batterySaverIntent=new Intent(Settings.ACTION_BATTERY_SAVER_SETTINGS);
startActivity(batterySaverIntent);

ИлиВы можете попробовать это:

  @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        startForegroundService(new Intent(this, ServiceClass.class));
    }
0 голосов
/ 29 ноября 2018

Попросите пользователей внести в белый список ваше приложение.Это единственное решение.Даже служба переднего плана + wake lock не будут работать.

В прошлом месяце было обсуждение: Надежность Workmanager для периодических задач на китайских ромах (Xiaomi, Huawei и т. Д.). Естьтам есть несколько полезных ссылок, но в конечном итоге вам придется разрешить пользователям вносить в белый список ваше приложение в настройках оптимизации батареи (или другого имени) каждого ПЗУ.

...