es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Hora de lanzamiento inesperada en iOS 15.

Me di cuenta de que había informes extraños cuando la aplicación se inició en iOS 15. Utilizo el siguiente código para obtener el tiempo de creación del proceso,

NSInteger rm_task_create_time(void) {
    static dispatch_once_t onceToken;
    static NSInteger taskCreateTimeMs = 0;
    dispatch_once(&onceToken, ^{
        struct kinfo_proc kProcInfo;
        if (rm_process_info([[NSProcessInfo processInfo] processIdentifier], &kProcInfo)) {
            taskCreateTimeMs = kProcInfo.kp_proc.p_starttime.tv_sec * 1000 + kProcInfo.kp_proc.p_starttime.tv_usec * 1.0E-3;
        }
    });
    return taskCreateTimeMs;
}

Usa el siguiente código para obtener el tiempo de ejecución del primer loop de la aplicación como el tiempo de renderización del primer frame,

static NSInteger firstDrawTime;
- (void)startFirstDrawMonitor:(void(^)(void))completeHandler {
    CFRunLoopRef mainRunloop = [[NSRunLoop mainRunLoop] getCFRunLoop];
    CFRunLoopActivity activities = kCFRunLoopAllActivities;
    CFRunLoopObserverRef observer = CFRunLoopObserverCreateWithHandler(
        kCFAllocatorDefault, activities, YES, 0, ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) {
            if (activity == kCFRunLoopBeforeTimers) {
                firstDrawTime = [NSDate date].timeIntervalSince1970 * 1E3;

            CFRunLoopRemoveObserver(mainRunloop, observer, kCFRunLoopCommonModes);
            CFRelease(observer);
        }
    });
CFRunLoopAddObserver(mainRunloop, observer, kCFRunLoopCommonModes);
}

Luego usa “firstDrawTime – rm_task_create_time()” para calcular el tiempo de lanzamiento de la aplicación. Pero, según los datos obtenidos, hay muchos valores atípicos en el tiempo de arranque en frío, como 31405290ms、8310805ms、5177209ms, pero el tiempo de didFinishLaunch al primer loop de ejecución es razonable, solo unos pocos cientos de milisegundos. No había tal problema antes de iOS 15. Así que especulo que puede haber algunas rutas en iOS 15 que harán que el proceso se inicie sin llamar a didFinishLaunch, o alguna otra posibilidad. ¿Alguien puede decirme qué cambios en iOS15 afectarán el tiempo de lanzamiento? ¿O cualquier otro cambio que pueda causar este problema? Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Análisis de informes extraños en el lanzamiento de aplicaciones en iOS 15

    Antecedentes

    Como experto en tecnologías de lanzamiento, especializado en iOS 15, recibí informes de un comportamiento extraño en el proceso de lanzamiento de aplicaciones en iOS 15.

    Descripción del problema

    El problema reportado involucra el uso de código para medir el tiempo de lanzamiento de la aplicación. El código involucra dos métodos:
    * rm_task_create_time() – que se utiliza para obtener el tiempo de creación del proceso.
    * startFirstDrawMonitor(completeHandler:) – que se utiliza para obtener el tiempo de la primera ejecución del runloop de la aplicación como tiempo de renderización del primer fotograma.

    El problema con el tiempo de lanzamiento es que, a partir de los datos obtenidos, hay muchos valores atípicos en el tiempo de inicio (cold start time), como 31405290ms、8310805ms、5177209ms, pero el tiempo desde didFinishLaunch hasta la primera ejecución del runloop es razonable, solo unos pocos cientos de milisegundos. No hubo tal problema antes de iOS 15.

    Hipótesis y preguntas

    El experto en tecnologías de lanzamiento especula que puede haber algunas rutas en iOS 15 que hagan que el proceso se inicie sin llamar a didFinishLaunch, o algunas otras posibilidades. Por lo tanto, el experto desea saber si hay algún cambio en iOS 15 que afectará el tiempo de lanzamiento, o cualquier otro cambio que pueda causar este problema.

    Solución propuesta

    Dado que no está claro qué podría estar causando los extraños tiempos de lanzamiento en iOS 15, el experto en tecnologías de lanzamiento propone investigar más a fondo los cambios en iOS 15 que podrían afectar el tiempo de lanzamiento. Esto implicará revisar las notas de lanzamiento de iOS 15 y examinar el código en detalle para ver si hay algún cambio que pueda afectar el tiempo de lanzamiento.

    Conclusión

    El experto en tecnologías de lanzamiento ha recibido informes de un comportamiento extraño en el proceso de lanzamiento de aplicaciones en iOS 15 y está investigando el problema. El experto revisará las notas de lanzamiento de iOS 15 y examinará el código en detalle para ver si hay algún cambio que pueda afectar el tiempo de lanzamiento.

Comments are closed.