update support emui customer china android service huawei

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.