android - support - huawei id
onTaskRemoved() no recibe llamadas en dispositivos HUAWEI y XIOMI (5)
He estado usando el método onTaskRemoved () en un Servicio para detectar cuándo una aplicación se eliminó de la lista RECIENTES del dispositivo deslizándola hacia afuera.
Con dar más luz a la respuesta proporcionada por
No es nuevo en Xiaomi porque Xiaomi tiene una función llamada permiso de aplicación, donde un usuario debe permitir que la aplicación se inicie automáticamente (Servicio).
En su caso, no se llama al
Service
, una vez que finaliza desde la pila.
Vaya así y permita que su aplicación se inicie automáticamente:
Settings > permissions > Autostart
He estado usando el método
onTaskRemoved()
en un Servicio para detectar cuándo una aplicación se eliminó de la lista RECIENTES del dispositivo deslizándola hacia afuera.
Realizo algunos registros y otras operaciones que deben llevarse a cabo cuando esto sucede.
Funciona perfectamente
Luego verifiqué este método en un dispositivo HUAWEI con Android 6.0. El método nunca se llama. También agregué una llamada Log.d y, como se esperaba, este registro nunca apareció. Lo mismo sucede en un dispositivo XIOMI.
¿Alguna idea de por qué sucede esto y cómo resolverlo?
¿O hay otra forma de detectar que la aplicación se eliminó de la lista RECIENTE sin depender de
onTaskRemoved()
?
Gracias
Cuando el usuario haya instalado su aplicación en el dispositivo xiaomi, redirija al usuario a la actividad de inicio automático y dígale al usuario que encienda:
if (Build.BRAND.equalsIgnoreCase("xiaomi")) {
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
startActivity(intent);
}
Use el código anterior para iniciar la página de actividad de inicio automático en xiaomi
Descargo de responsabilidad: esta no es una buena solución. Es el truco
Puede evitar que el usuario elimine la aplicación
En su manifiesto -> etiqueta de actividad interna -> Agregar línea siguiente
android: excludeFromRecents = "true"
Su aplicación no se muestra en el historial de aplicaciones recientes. Entonces el usuario no puede matar la aplicación.
En Mi Huawei también me enfrentaba a un problema, solo vaya a Configuración => Ahorro de energía => Proteger aplicación => encuentre su aplicación y actívela. El servicio comenzará a ejecutarse.
En algunos dispositivos (algunos LG, Huawei, Xiaomi y otros), su aplicación debe agregarse manualmente a una lista de "aplicaciones protegidas" o "aplicaciones que pueden ejecutarse en segundo plano" para que Android reinicie los servicios STICKY.
Si su aplicación no se ha agregado manualmente a esta lista, Android simplemente elimina sus procesos y no los reinicia y tampoco llama a
onTaskRemoved()
.
Esto se hace para preservar la duración de la batería limitando la cantidad de aplicaciones que pueden tener servicios STICKY ejecutándose en segundo plano.
En dichos dispositivos, debería ver una página en "Configuración", a veces en "administración de energía", a veces en otros lugares, donde debe agregar explícitamente su aplicación. También deberá indicar a sus usuarios que agreguen explícitamente su aplicación a esta lista.