1
在我开发的应用程序中,我需要在活动之间运行计时器以跟踪OAuth令牌的持续时间。为此,我实施了一项服务。Xamarin Android后台计时器服务
这里的服务代码:
[return: GeneratedEnum]
public override StartCommandResult OnStartCommand(Intent intent, [GeneratedEnum] StartCommandFlags flags, int startId)
{
// Gets the token duration in seconds
tokenDuration = Convert.ToInt32(intent.GetStringExtra("tokenDuration"));
tokenStart = Convert.ToDateTime(intent.GetStringExtra("tokenStart"));
tokenEnd = Convert.ToDateTime(tokenStart.AddSeconds(tokenDuration));
t = new Thread(() =>
{
timer = new Timer(tokenDuration);
timer.Interval = 60000;
timer.Elapsed += OnTimedEvent;
timer.Enabled = true;
});
t.Start();
return StartCommandResult.Sticky;
//return base.OnStartCommand(intent, flags, startId);
}
private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e)
{
timeElapsed++;
System.Diagnostics.Debug.WriteLine("Minute elapsed, Total Token duration {0}s, Total time elapsed {1}min", tokenDuration, timeElapsed);
if (tokenEnd.Add(new TimeSpan(0, -3, 1)) == tokenStart.AddMinutes(timeElapsed))
{
timer.Stop();
Intent intent = new Intent();
intent.SetAction(action);
intent.PutExtra("AskRefreshToken", true);
SendBroadcast(intent);
}
}
我对于这个问题是我怎么能得到这些信息在活动令牌时需要更新,这样我就可以更新视图模型。 有没有更好的方法来解决这个问题? 请注意,我是Android开发初学者。 预先感谢您。
谢谢,稍后会检查出来:) –