In der Anwendung, die ich entwickle, muss ich einen Timer zwischen Aktivitäten ausführen, um die Dauer eines OAuth-Tokens zu verfolgen. Zu diesem Zweck habe ich einen Service implementiert.Xamarin Android Hintergrund-Timer-Dienst
Hier ist der Service-Code:
[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);
}
}
Meine Frage zu dieser ist, wie kann ich die Informationen in einer Aktivität erhalten, wenn das Token aktualisiert werden muss, damit ich das Ansichtsmodell aktualisieren. Gibt es eine bessere Möglichkeit, dieses Problem anzugehen? Bitte beachten Sie, dass ich ein wenig Anfänger in der Android-Entwicklung bin. Vielen Dank im Voraus.
Danke, schau es dir später an :) –