Как повторно открыть приложение Connect IQ из фонового процесса?

Я хочу написать трекер настроения для своего Garmin Fenix, поэтому я хочу, чтобы приложение всплывало через определенный промежуток времени, вибрировало и спрашивало меня о моем текущем настроении. Конечно, я не хочу, чтобы трекер настроения все время был на переднем плане, поэтому я ищу способ повторно открыть свое приложение из фоновой задачи.

Я нашел два модуля, которые, кажется, могут достичь этого, Timer и Background. Background может передавать данные обратно в приложение через некоторое время, но не может вибрировать, и передача данных вступает в силу только после повторного открытия приложения вручную. Timer, кажется, вообще не имеет большого эффекта, когда приложение закрыто — по крайней мере, в симуляторе.

Каков наилучший способ повторно открыть мое приложение через определенный период времени?


person Huluk    schedule 19.10.2019    source источник


Ответы (1)


Насколько я понимаю, вы можете сделать следующее:

Вы хотите использовать [requestApplicationWake][1].

в методе onStop() вы можете зарегистрировать временное событие.

Background.registerForTemporalEvent( 10 * 60 ); // 10 mins is the min

Затем создайте этот класс, который будет вызываться при срабатывании события.

using Toybox.Background;
using Toybox.System;
using Toybox.Application.Storage;

(:background)
class BackgroundTimerServiceDelegate extends System.ServiceDelegate {

    function initialize() {
        ServiceDelegate.initialize();
    }

    function onTemporalEvent() {
        // do whatever processing you need and then serve the popup
        Background.requestApplicationWake("do you want to open the app?");          
    }
}
person atoms    schedule 02.05.2020
comment
За строкой Background.requestApplicationWake должны следовать: Background.exit(null); - person David Karlsson; 26.02.2021