Подтвердить что ты не робот

OnTaskRemoved() не получает вызов в устройствах HUAWEI и XIOMI

Я использовал метод onTaskRemoved() в службе, чтобы обнаружить, когда приложение было удалено из списка устройств RECENT, отмахиваясь от него. Я заготовлю несколько протоколов и некоторые другие операции, которые должны произойти, когда это произойдет. Он отлично работает.

Затем я проверил этот метод на устройстве HUAWEI под управлением Android 6.0. Метод никогда не вызван. Я также добавил вызов Log.d и, как и ожидалось, этот журнал так и не появился. То же самое происходит на устройстве XIOMI.

Любые идеи, почему это происходит и как это разрешить? Или существует другой способ обнаружить приложение, которое было удалено из списка RECENT без использования onTaskRemoved()?

Спасибо

4b9b3361

Ответ 1

Когда пользователь установил ваше приложение на устройстве xiaomi, перенаправляйте пользователя на автоматический запуск и говорите пользователю о включении:

if (Build.BRAND.equalsIgnoreCase("xiaomi")) {
                Intent intent = new Intent();
                intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
                startActivity(intent);
            }

Используйте приведенный выше код для запуска страницы активности автозапуска на xiaomi

Ответ 2

На некоторых устройствах (некоторые LG, Huawei, Xiaomi и другие) ваше приложение должно быть добавлено вручную в список "защищенных приложений" или "приложений, разрешенных для работы в фоновом режиме", чтобы Android перезапустился Услуги STICKY. Если ваше приложение не добавлено вручную в этот список, Android просто убивает ваши процессы и не перезапускает их, а также не вызывает onTaskRemoved(). Это делается для экономии времени работы от батареи, ограничивая количество приложений, которые могут иметь службы STICKY, работающие в фоновом режиме.

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

Ответ 3

Я использую метод onTaskRemoved() в службе, чтобы обнаружить, когда приложение было удалено из списка устройств RECENT, отрывая его.

С большей освещенностью ответа Дэвида Вассера

Это не ново для Xiaomi, потому что у Xiaomi есть функция, называемая разрешением приложения, где пользователь должен разрешить приложению автоматически запускаться (Service). В вашем случае Service не вызывается, после его завершения из стека.

Пойдите так и разрешите автозапуск приложения:

Settings > permissions > Autostart

Ответ 4

В My Huawei также я столкнулся с проблемой, просто зайдите в Настройка => Энергосбережение => Защитить приложение => найдите свое приложение и включите его.. Служба запустится..

Ответ 5

Отказ от ответственности: это не хорошее решение.. Это взломать

Вы можете предотвратить уничтожение приложения пользователем

В вашем Манифесте → тег внутренней активности → Добавить следующую строку

андроид: excludeFromRecents = "истина"

Ваше приложение не отображается в истории последних приложений. Таким образом, пользователь не может убить приложение.