1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openharmony-ability_ability_runtime

 / Детали:

[Пользовательский вопрос]: setTimeOut не выполняется в соответствии с ожиданиями, а вместо этого...

Предстоит сделать
Владелец
Создано  
04.03.2025

выполняется каждый раз, когда приложение запускается.

Описание проблемы

  1. Какие действия вы выполняли при возникновении проблемы?
    Нажали кнопку для запуска приложения.

  2. Чего вы ожидали получить в результате этих действий? Что действительно получили?
    Наши основные программы являются ServiceExtensionAbility.

    Сценарий 1:
    У нас есть логика отображения окна впереди на 100 секунд перед тем как скрыть его автоматически. Код примерно такой:

    this.TimerTaskId = setTimeout(() => {
        ...
        log.info('Окно было показано более 100 секунд, скрываю его');
        this.window.hide();
    }, 1000 * 100);
    

    При каждом скрытии страницы мы очищаем таймер:

    onPageHide() {
        if (this.TimerTaskId) {
            clearTimeout(this.TimerTaskId);
            this.TimerTaskId = undefined;
        }
    }
    

    Однако часто видим сообщение "Окно было показано более 100 секунд, скрываю его" сразу после запуска приложения и выполнение this.window.hide().

    Сценарий 2:
    У нас есть логика самоубийства приложения через 300 секунд, если оно находится в фоновом режиме. Код примерно такой:

    onPageHide() {
        this.killTimerTaskId = setTimeout(() => {
            ...
            this.context?.terminateSelf().then(() => {
                logger.info("Успешное завершение работы");
            });
        }, 1000 * 300);
    }
    

    При каждом появлении страницы мы очищаем этот таймер:

    onPageShow() {
        if (this.killTimerTaskId) {
            clearTimeout(this.killTimerTaskId);
            this.killTimerTaskId = undefined;
        }
    }
    

    Также иногда видим сообщение "Успешное завершение работы" сразу после запуска приложения и выполнение самоубийства.3. Пожалуйста, приложите ссылку на проблемную страницу, скриншоты, устройства и IDE логи.
    Ответ:

    14:15:50.869 Временная задача на 300 секунд не была выполнена.
    14:22:33:935 После запуска приложения было выполнено самоубийство через 300 секунд, хотя прошло уже около семи минут.

Комментарий (0)

GitLife Service Account Задача создана
GitLife Service Account добавлено
 
question
label.
GitLife Service Account добавлено
 
waiting_for_assign
label.
Развернуть журнал операций

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/openharmony-ability_ability_runtime.git
git@api.gitlife.ru:oschina-mirror/openharmony-ability_ability_runtime.git
oschina-mirror
openharmony-ability_ability_runtime
openharmony-ability_ability_runtime