¿Qué pasó con la terminación automática?

2

En Mac OS X Lion (10.7) Apple introdujo una función llamada " Terminación automática " donde las aplicaciones se cerrarán automáticamente después de un tiempo de inactividad.

Personalmente, solo vi este trabajo con Vista previa y algunas otras aplicaciones. Ni Apple ni los desarrolladores de terceros parecían adoptarlo mucho. Y en los últimos años, no he visto que una sola aplicación se cierre automáticamente, ni siquiera la vista previa.

Mi pregunta es, ¿qué pasó con esta característica? ¿Todavía existe? ¿Algún desarrollador la usa? ¿Y por qué los Apple dejaron de usarlo en sus aplicaciones?

    
pregunta Arthur 13.09.2016 - 11:48

2 respuestas

2

Terminación automática sigue siendo parte de macOS. Cuando se implementa correctamente, no debería verlo en acción.

Para descubrir qué aplicaciones conocen la terminación automática, ejecute el siguiente comando en Terminal.app :

grep -r NSSupportsAutomaticTermination /Applications

Requiere más código

El soporte de la terminación automática requiere un esfuerzo adicional y, con frecuencia involucrado, del desarrollador de la aplicación.

La aplicación debe lidiar con un entorno en el que se podría requerir que se cierre en (casi) cualquier momento; eso significa poder guardar y restaurar el estado rápidamente, sin interacción del usuario, y en (casi) cualquier momento:

  

La terminación automática es una función que debe codificar explícitamente en su aplicación. Declarar la compatibilidad con la terminación automática es fácil, pero las aplicaciones también deben trabajar con el sistema para guardar el estado actual de su interfaz de usuario para que pueda restaurarse más tarde, según sea necesario. El sistema puede detener el proceso subyacente de una aplicación automática en cualquier momento, por lo que guardar esta información mantiene la continuidad de la aplicación. Por lo general, el sistema destruye el proceso subyacente de una aplicación algún tiempo después de que el usuario haya cerrado todas las ventanas de la aplicación. Sin embargo, el sistema también puede matar una aplicación con ventanas abiertas si la aplicación no está actualmente en pantalla, tal vez porque el usuario la ocultó o cambió de espacio.

Preguntar a Apple

El motivo por el que Apple parece haber eliminado la compatibilidad de algunas de sus aplicaciones en OS X 10.11 es una pregunta mejor dirigida a Apple .

Una cuestión de prioridades

Cualquier persona que escriba aplicaciones para Mac debe juzgar si esta es una característica que vale la pena implementar y si ese tiempo de ingeniería es mejor gastado en otro lugar. Esto siempre será una cuestión de juicio para el desarrollador, por lo que sospecho que su pregunta nunca podrá ser respondida definitivamente.

Dile a los desarrolladores

Si tiene aplicaciones que desea que admitan la terminación automática, informe a los desarrolladores de la aplicación. Si suficientes clientes valoran la terminación automática, entonces los desarrolladores tomarán el tiempo para implementarla.

    
respondido por el Graham Miln 13.09.2016 - 17:11
0

La respuesta de Graham Miln es muy completa, solo hay algunas notas que me gustaría agregar:

1) Una aplicación puede admitir Terminación automática o Terminación repentina o incluso ambas . La diferencia entre estos dos es que: con la terminación automática, el sistema puede salir de la aplicación "a voluntad", pero la cerrará "normalmente" (como si eligiera Quit <AppName> del menú <AppName> ), permitiendo que la aplicación funcione algunos trabajan en quit, por lo que se puede restaurar nuevamente a ese estado cuando se vuelve a abrir. Con Sudden Termination, el sistema puede "matar" la aplicación "a voluntad" sin ninguna posibilidad de que la aplicación realice ninguna acción antes de morir, ya que morirá instantáneamente, lo cual es mucho más rápido.

2) Las aplicaciones pueden admitir cualquier forma de terminación sin declararla en su archivo Info.plist , por lo que el grep que no incluye una aplicación no significa que la aplicación no admita ninguna de las funciones. En realidad, la entrada Info.plist solo cambia el comportamiento predeterminado de una aplicación. El comportamiento predeterminado es no admitir ninguno, a menos que el código lo habilite explícitamente. Cuando se declara en su archivo Info.plist , el comportamiento es al revés: la función declarada está habilitada de forma predeterminada, a menos que el código lo deshabilite explícitamente.

3) La razón para controlar estas funciones en el código es que solo la aplicación en sí puede saber si actualmente está realmente inactiva o esperando a que ocurra algún evento y, por lo tanto, no debe morir en este momento. Por lo tanto, una aplicación puede desactivar ambos temporalmente mientras se espera que ocurra algo o se procesan algunos datos internamente y luego se vuelven a encender una vez que están listos.

4) En ambos casos, el sistema decide cuándo finalizar una aplicación y cuándo no ("a voluntad") y en muchos casos el sistema simplemente no lo desea, ya que no tiene ninguna razón para hacerlo. P.ej. si el sistema se queda sin memoria, buscará de forma agresiva las aplicaciones que puede terminar para liberar rápidamente la memoria para aquellos que continuarán ejecutándose, pero siempre que no haya escasez, ¿qué ventaja tendría para el sistema eliminar estas aplicaciones? ? La próxima vez que los use, solo es necesario reiniciarlos, lo que es una pérdida de tiempo de procesamiento cuando no había ninguna razón para dejarlos en primer lugar. Y la falta de memoria no se define por la cantidad de memoria libre que tiene (no tiene falta solo porque toda la memoria parece estar en uso), sino por la llamada "presión de memoria". Activity Monitor puede mostrarle la presión de memoria de su sistema. Entonces, solo porque una aplicación admite cualquier forma de terminación, no se dice que el sistema realmente usará esa característica.

5) Con la introducción de los servicios XPC en 10.8, algunas aplicaciones comenzaron a usar estos pequeños ayudantes para realizar sus tareas de procesamiento. Los servicios XPC soportan implícitamente la terminación repentina. A pesar de pertenecer a una aplicación, los Servicios XPC no muestran ninguna IU (y no aparecen en el Dock), por lo que no notará cuándo se inician y cuándo se cancelan. Eso significa que, en lugar de que el sistema finalice la aplicación completa para ahorrar recursos, las aplicaciones que utilizan muchos recursos pueden usar los Servicios de XPC y el sistema terminará estos servicios de XPC si es necesario, lo que a menudo hace innecesario que la propia aplicación sea compatible con cualquiera de las formas de terminación como la terminación de La aplicación ahora difícilmente ahorrará al sistema una gran cantidad de recursos si el uso principal de los recursos es causado por los Servicios XPC de esa aplicación.

    
respondido por el Mecki 15.11.2017 - 15:57

Lea otras preguntas en las etiquetas