Есть ли способ отключить OS X автоматического завершения приложений?

11

Есть ли способ сказать OS X Lion отключить автоматическое завершение для данного приложения, которое вы не хотите автоматически завершать?

К вашему сведению, Лев - лодырь, если вы еще не знали, что, если вы не хотите, чтобы это было для определенной Заявки.

Lion закроет ваши запущенные приложения за вашей спиной, если решит, что им нужны ресурсы, и если вы, кажется, не используете их. Эвристика для определения того, является ли приложение «используемым», очень консервативна: оно не должно быть активным приложением, оно не должно иметь видимых не минимизированных окон - и, конечно, оно должно явно поддерживать автоматическое завершение.

Например, скажем, я не хочу, чтобы TextEdit автоматически завершал работу, когда у меня нет открытых окон TextEdit, и переключался на другое приложение.

После того, как взглянуть на Mac App Программирование раздел Руководство для автоматического прекращения я полагал , что я бы попытаться добавить ключ NSSupportsAutomaticTermination со значением Нет файла Info.plist для TextEdit. (Не работает: TextEdit вылетает при открытии.)

Следует отметить, что файл не содержал ключ NSSupportsAutomaticTermination (что означает, что Apple использовала NSProcessInfo для включения автоматического завершения), поэтому добавление ключа, скорее всего, никак не повлияет, поскольку NSProcessInfo переопределяет то, что находится в файле plist. (Подтверждено, что это не работает, путем самостоятельной подписи TextEdit с измененным Info.plist, включая ключ NSSupportsAutomaticTermination и значение No).

Отмечен один побочный эффект: изменение чего-либо в файле Info.plist приводит к сбою TextEdit при открытии. Причина отмечена в журнале сбоев как «недопустимая подпись кода», что означает, что приложение TextEdit и все его содержимое имеют подпись кода. Обходной путь заключается в самостоятельной подписи приложения с помощью codesignкоманды и самозаверяющего корневого сертификата, как указано в задаче подписи кода .

После того, что я пробовал до сих пор, TextEdit по-прежнему подчиняется автоматическому завершению.

MrDaniel
источник
1
Итак ... если вы подписываете приложение самостоятельно, оно работает?
Jtbandes
1
Нет, программа по-прежнему автоматически завершает работу даже после самостоятельной подписи, независимо от того, что я добавил в Info.plist
MrDaniel
1
Вы пытались загрузить пример исходного кода для TextEdit, который Apple предоставляет вместе с инструментами разработки, и редактировать (или удалять) материал NSProcessInfo, который регистрируется для автоматического завершения?
Cajunluke
Нет не пробовал то, что должно работать в этом случае. Но этот вопрос выходит за рамки TextEdit. Это больше вопрос о том, можем ли мы обойти это без вмешательства разработчика на уровне исходного кода. Поскольку у нас не всегда будет доступ к исходному коду для приложений, поддерживающих автоматическое завершение.
MrDaniel
1
«Так работает Apple», это просто фальшивка. Это новая функция, которая не очень хорошо рекламируется. Из документов Apple даже не ясно, что требуется для ОС для автоматического завершения программы. И Apple не рекламирует это и не упоминает об этом на странице возможностей Lion для конечных пользователей. Я думаю, что это что-то новое, Apple пытается. Если конечному пользователю это не нравится, они должны сообщить Apple и разработчикам, чтобы они могли сделать это лучше.
MrDaniel

Ответы:

14

Ваше желание - моя команда терминала ;-)

defaults write -g NSDisableAutomaticTermination -bool yes

Обратите внимание, что поскольку автоматическое завершение на самом деле не завершает работу приложений, а скрывает их, они должны быть правильно завершены, чтобы это вступило в силу.


источник
2
Отлично, хорошо найти пользователя 22760. Пробовал, как отмечено выше, и это работает, спасибо. Тестовый сценарий TextEdit.app больше не завершается автоматически после запуска значений по умолчанию ..., а затем открытия и выхода из TextEdit. После повторного открытия TextEdit он больше не будет автоматически определяться без открытых окон и будет работать в фоновом режиме.
MrDaniel
Интересный. После опробования этой команды она действительно работает. Однако попытка отменить его оказалась более сложной. по умолчанию пишите -g NSDisableAutomaticTermination -bool no, или false, или удаление ключа не имеет никакого эффекта, и приложения не будут автоматически
завершаться
Эта чудо команда работает для меня на Маверикс! Он вступает в силу при возвращении к сеансу или при открытии нового сеанса.
Николас Барбулеско
Большое спасибо за добавленную инструкцию для запуска и выхода из приложения вручную, а затем перезапустите его, чтобы увидеть эффект должным образом!
Jtheletter
1

Существует верный способ исправить это, если ваше оборудование поддерживает это. Вы можете обновить Mac OS X 10.7 (Lion) до Mac OS X 10.6 (Snow Leopard).

Хотя не все оборудование, на котором будет работать Lion, может поддерживать эту улучшенную операционную систему (к сожалению, мой MacBook Air середины 2011 года не поддерживает), оно включает в себя такие функции, как неавтоматическое завершение работы, Rosetta (который позволяет процессорам Intel запускать программное обеспечение, скомпилированное для PPC). процессоры), а также совместимость с функциями записи для каждого приложения в отличной WireTap Studio.

Как и при любом обновлении, некоторые функции теряются (например, управление полетом , панель запуска , некоторые жесты), а некоторые особенности операционной системы требуют некоторого привыкания (например, направление прокрутки меняется на противоположное), но в целом это прекрасное обновление.

Даниэль
источник
2
Хороший вопрос, но для большинства пользователей Auto Termination не стоит откатываться на Snow Leopard, это всего лишь небольшое раздражение для некоторых пользователей, я не один из них.
MrDaniel
1
Конечно, это экстремальное решение, но это один из нескольких способов, которыми Snow Leopard превосходит Lion. Совокупный эффект от них может побудить кого-то хотеть снежного барса. Тем не менее, я только учусь жить с этим, так как другие функции Lion (особенно связанные с iCloud) заставляют его мириться с недостатками.
Даниил
Вопрос о льве.
Грэм Перрен
1
@GrahamPerrin так был мой ответ. Я хочу сказать, что это одна из многих вещей, которые Lion сломал, и одним из решений может быть не запускать Lion.
Даниил