lollipop - Alternativa a getRunningTasks en Android L
lollipop juego (1)
Está bien documentado que getRunningTasks ahora está en desuso en Android L. Usé esto para obtener la mejor actividad y esta fue una característica importante de mi aplicación. Aunque no está completo, un empleado de Google ha prometido una nueva solución en Android L. La solución dice:
"para L planeamos tener una nueva solución que aborde algunos de los casos de uso existentes de getRecentTasks (): esperamos exponer el servicio de estadísticas de uso interno del sistema en una forma nueva y ampliada que está disponible para aplicaciones de terceros a través de SDK
El nuevo servicio de estadísticas de uso debe tener dos piezas principales de información. Primero, proporcionará estadísticas agregadas del tiempo que el usuario pasó en cada aplicación y el último tiempo de lanzamiento de esas aplicaciones, acumulado en días, semanas, meses y años. En segundo lugar, incluirá eventos de uso detallados durante los últimos días, describiendo la hora y el Nombre del componente cuando cualquier actividad pase a primer plano o en segundo plano.
El acceso a estos nuevos datos de uso requerirá que el usuario otorgue explícitamente a la aplicación acceso a las estadísticas de uso a través de una nueva interfaz de usuario de configuración. Podrán ver todas las aplicaciones que tienen acceso y revocar el acceso en cualquier momento.
Me doy cuenta de que esto no cubrirá todos los usos posibles de la antigua API getRecentsTask, y me disculpo por eso. Sin embargo, para lo que vemos como los usos actuales clave de la API, una nueva API de estadísticas de uso debería ser mucho más robusta y eficiente ".
Puede leer más sobre esto aquí: https://code.google.com/p/android-developer-preview/issues/detail?id=29#c50
He intentado buscar en la documentación de Android L, pero no puedo encontrar nada que hable del servicio de estadísticas de uso mencionado anteriormente. ¿Alguien ha usado esta API? ¿Alguien puede señalarme la documentación para esto?
Las estadísticas del sistema api evocadas en su pregunta también se presentan here y la API detallada está here . Por lo que puedo ver, esta API no le permitirá obtener la actividad principal actual.
es decir, tiene la capacidad de recibir
UsageEvent
con el tipo
MOVE_TO_FOREGROUND
usando
UsageStatsManager.queryEvents
pero de acuerdo con
UsageStatsManager.queryEvents
:
Los últimos minutos del registro de eventos se truncarán para evitar el abuso por parte de las aplicaciones.
Por lo tanto, es realmente una API para obtener estadísticas, no para obtener información en tiempo real.
(tenga en cuenta que el ahora obsoleto
getRunningTasks()
tampoco tenía la intención de recuperar datos en tiempo real:
javadoc
)
Por otro lado, si solo está interesado en la actividad principal de
su propia aplicación
: puede usar
getAppTasks()
devolviendo una
List<AppTask>
donde puede obtener
RecentTaskInfo
con
getTaskInfo
EDITAR: here se proporciona otro enfoque.
Se basa en UsageStats y UsageStats.getLastTimeUsed() . Inconveniente: requiere permiso adicional y solo le da el nombre del paquete, no la actividad, pero le da datos en tiempo real.