我想为Garmin Fenix写一个心情跟踪器,所以我希望该应用程序在一定时间间隔后弹出,振动并询问我当前的心情。当然,我不想一直将心情跟踪器放在前台,因此我正在寻找一种从后台任务重新打开应用程序的方法。
我发现了两个似乎可以实现这一目标的模块,Timer
和Background
。 Background
可以在一段时间后将数据传递回应用程序,但不会振动,并且只有在手动重新打开应用程序后,数据传输才会生效。一旦应用关闭,Timer
似乎根本没有太大作用-至少在模拟器中。
在特定时间段后重新打开我的应用的最佳方法是什么?
答案 0 :(得分:0)
据我了解,您可以执行以下操作:
您要使用[requestApplicationWake][1]
。
在onStop()
方法中,您可以注册一个temporalEvent。
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?");
}
}