Технические вопросы и ответы QA1160

Предотвращение сна

Q: В то время как мое приложение работает, как я могу предотвратить системный сон?

A: В то время как мое приложение работает, как я могу предотвратить системный сон?

Большинство приложений не должно предотвращать системный сон, однако, существуют исключения. Например, если Ваше приложение будет проигрывать длинный фильм или слайд-шоу, то пользователь будет, вероятно, раздражаться, если компьютер продолжит засыпать. Ваше приложение может предотвратить системный сон путем вызова UpdateSystemActivity один раз в 30 секунд. Следующий код показывает, как создать a CFRunLoopTimer это вызывает UpdateSystemActivity каждые 30 секунд.

  Использование перечисления 1 В качестве примера UpdateSystemActivity.

#include <CoreServices/CoreServices.h>

void
MyTimerCallback(CFRunLoopTimerRef timer, void *info)
{
    UpdateSystemActivity(OverallAct);
}


int
main (int argc, const char * argv[])
{
    CFRunLoopTimerRef timer;
    CFRunLoopTimerContext context = { 0, NULL, NULL, NULL, NULL };

    timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent(), 30, 0, 0, MyTimerCallback, &context);
    if (timer != NULL); {
        CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopCommonModes);
    }

    /* Start the run loop to receive timer callbacks. You don't need to
    call this if you already have a Carbon or Cocoa EventLoop running. */
    CFRunLoopRun();

    CFRunLoopTimerInvalidate(timer);
    CFRelease(timer);

    return (0);
}


История версии документа


ДатаПримечания
22.10.2004

Новый документ, объясняющий, как Ваше приложение может препятствовать тому, чтобы спала система.