samsung - El cambio dinámico de permisos de Android Marshmallow mata todos los procesos de aplicación
permisos android studio (2)
Observación: el cambio manual del permiso de la aplicación de Android eliminó todos los procesos de esta aplicación.
Procedimiento: Vaya a Configuración-> Aplicaciones, seleccione Aplicación y Permisos. Desactivar uno de los permisos. Dispositivo: dispositivo Nexus 6 con Android Marshmallow 6.0
Cuando inicié la aplicación desde el iniciador, comenzó la actividad que estaba arriba antes de que se cambiara el permiso de esta aplicación. Ese es un comportamiento diferente de cuando eliminamos el proceso de la aplicación al deslizar la aplicación desde el menú multi-tarea UI. En ese caso, primero se crea la actividad del lanzador. Es decir, para que la aplicación funcione correctamente cuando se inicia después de cambiar el permiso, no puede tener una dependencia en la actividad del iniciador que se iniciará.
¿Es este comportamiento esperado con permisos dinámicos en todos los dispositivos Android 6.0+? ¿Por qué hay una diferencia en el comportamiento cuando el proceso de solicitud se cancela al deslizarlo desde el menú multitarea de UI?
Es decir, para que la aplicación funcione correctamente cuando se inicia después de cambiar el permiso, no puede tener una dependencia en la actividad del iniciador que se iniciará.
Ese ha sido el caso durante años. Por ejemplo, si su proceso finaliza debido a las condiciones de memoria insuficiente, pero el usuario ha estado en él recientemente (por ejemplo, dentro de la última media hora), cuando el usuario visita la pantalla de resumen (lo que usted llama la menú ") y va a regresar a su aplicación, el control regresará a una nueva instancia de cualquier actividad en la que el usuario haya estado en el último (es decir, estuvo en la parte superior de la pila de ATRÁS).
¿Es este comportamiento esperado con permisos dinámicos en todos los dispositivos Android 6.0+?
Sí. También es un comportamiento esperado en todos los dispositivos Android anteriores, para otros casos en los que su proceso se terminó pero su tarea aún es reciente y está pendiente.
¿Por qué hay una diferencia en el comportamiento cuando el proceso de solicitud se cancela al deslizarlo desde el menú multitarea de UI?
Al deslizar una tarea fuera de la pantalla de resumen se elimina esa tarea. Por lo tanto, esa tarea no se puede reutilizar cuando el usuario intenta volver a su aplicación (por ejemplo, a través de un icono de inicio de la pantalla de inicio).
Supongo que la razón para el asesinato es la siguiente. Se trata de la concurrencia. El sistema puede elegir uno de los 3 enfoques posibles:
Para revocar un permiso en silencio. La aplicación no tiene forma de verificar esto, ya que entre cualquier momento de "verificación" y "uso" todavía puede ocurrir una revocación.
Para notificar la aplicación. Este tipo de notificación debe ser confirmada por la aplicación, lo que significa que ya no su hilo va a acceder a la API deshabilitada y que el sistema puede desactivar la API ahora. Esto es elegante, pero es difícil de programar para programadores inexpertos.
Para matar la aplicación, asegúrese de que la próxima vez que se inicie se dará cuenta correctamente de que se revocó el permiso.