Existen varias situaciones en las que la recopilación de perfiles podría no funcionar como se espera:
- La recopilación de perfiles falla debido a un error interno. Si esto sucede, la API de
ProfilingResult
te informa sobre los errores. - La recopilación de perfiles falla debido a la limitación de frecuencia. Para obtener más información, consulta Cómo funciona el límite de frecuencia.
- La recopilación de perfiles se realiza correctamente, pero la app no recibe una notificación de inmediato.
Esto puede ocurrir si la app falla durante las recopilaciones de perfiles prolongadas. Si la app se cierra, el sistema detiene y guarda automáticamente el perfil. Se le informa a la app sobre el perfil recopilado cuando se reinicia y registra un objeto de escucha general con
ProfilingManager
.
Cómo funciona la límite de frecuencia
ProfilingManager
incluye un limitador de frecuencia para las apps individuales y para todo el sistema. El limitador de frecuencia evita que las apps usen demasiados recursos del sistema registrando demasiados perfiles, ya que una sesión de generación de perfiles completa usa muchos recursos.
Tanto los limitadores de frecuencia del sistema como los de la app asignan un costo a cada tipo de perfil recopilado, ya que algunos perfiles requieren más recursos que otros. El limitador de aplicaciones controla cuánto puede grabar una app individual en función de su costo total. Sin embargo, el limitador del sistema controla el costo total de todos los registros de perfiles de todas las apps.
El limitador de frecuencia establece un costo total que cada app puede usar (este costo es el mismo para todas las apps). Cada perfil usa una parte de este costo total, según su tipo.
El limitador de frecuencia usa tres períodos:
- Por hora: Hay un costo máximo permitido por hora.
- Por día: Hay un costo máximo permitido por día.
- Por semana: Hay un costo máximo permitido por semana.
El limitador de frecuencia establece un costo total que se puede usar dentro de cada uno de estos períodos. Por ejemplo, es posible que una app pueda grabar X perfiles por hora, Y por día y Z por semana. Si tu app alcanza su límite en cualquiera de estos períodos, las solicitudes de perfil futuras generarán un error ERROR_FAILED_RATE_LIMIT_PROCESS
.
Estos períodos funcionan de manera similar para la limitación de frecuencia a nivel del sistema. Sin embargo, el limitador de velocidad del sistema es un límite global que comparten todas las apps. Este límite se establece por separado de las cuotas de apps individuales, pero todos los perfiles contribuyen a él, con los mismos períodos horarios, diarios y semanales. Si se alcanza este límite global, recibirás el error ERROR_FAILED_RATE_LIMIT_SYSTEM
.