Alternativa a getRunningTasks en Android L

Resuelto MRK asked hace 54 años • 1 respuestas

Está bien documentado que getRunningTasks ahora está obsoleto en Android L. Utilicé esto para obtener la máxima actividad y fue una característica importante de mi aplicación. Aunque no está completa, 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 abordará 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 debería tener dos datos principales. En primer lugar, proporcionará estadísticas agregadas del tiempo que el usuario pasó en cada aplicación y la última hora de inicio de esas aplicaciones, acumuladas 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 en el que cualquier actividad pasa al primer plano o al fondo.

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 ello. Sin embargo, para lo que consideramos que son los usos clave actuales de la API, una nueva API de estadísticas de uso debería ser mucho más sólida y eficiente".

Puede leer más al respecto aquí: https://code.google.com/p/android-developer-preview/issues/detail?id=29#c50

Intenté buscar en la documentación de Android L pero no puedo encontrar nada que mencione el servicio de estadísticas de uso mencionado anteriormente. ¿Alguien ha utilizado esta API? ¿Alguien puede indicarme la documentación para esto?

MRK avatar Jan 01 '70 08:01 MRK
Aceptado

La API de estadísticas del sistema evocada en su pregunta también se presenta aquí y la API detallada está aquí . Por lo que puedo ver, esta API no le permitirá obtener la actividad principal actual.

es decir, tienes la posibilidad de recibir UsageEventcon el tipo MOVE_TO_FOREGROUNDusando UsageStatsManager.queryEventspero según javadoc :

Los últimos minutos del registro de eventos se truncarán para evitar el abuso por parte de las aplicaciones.

Por 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()no tenía como objetivo recuperar datos en tiempo real: javadoc )

Por otro lado, si solo está interesado en la actividad principal de su propia aplicación : puede utilizar getAppTasks()la opción de devolución List<AppTask>donde puede obtener la información de tarea reciente congetTaskInfo


EDITAR: aquí se proporciona otro enfoque .

Se basa en UsageStats y UsageStats.getLastTimeUsed() . Inconveniente: requiere permiso adicional y solo te da el nombre del paquete -no la actividad-, pero te da datos en tiempo real.

ben75 avatar Oct 19 '2014 13:10 ben75