25 avril 2024

OnSuspending : Demander au système plus de temps pour sauver ses données

« S’il vous plait m’sieur, j’peux avoir plus de temps pour mémoriser des données avant ? »

Dans l’App.Xaml.cs, vos pouvez « solliciter » le système pour qu’il vous attribue du rab pour finaliser une sauvegarde lorsque votre application passe à l’état de « Onsuspending » :
On lui demande via ExtendedExecutionSession. et ce qui est marrant c’est qu’on doit se justifier 🙂 avec ExtendedExecutionReason.

Entre le deferral qui permet d’indiquer au système que vous utilisez par exemple du code async et que vous avez besoin d’un peu de temps pour finaliser

private void OnSuspending(object sender, SuspendingEventArgs e)
{
    var deferral = e.SuspendingOperation.GetDeferral();
   
    using (var session = new ExtendedExecutionSession{ Reason = ExtendedExecutionReason.SavingData})
    {
        session.Description = "Envoi des data";
       
        if (await session.RequestExtensionAsync () == ExtendedExecutionResult.Denied)
            //le système veut pas, j'ai que 3 secondes
            SauvegardeRapide();
        else
            //le système est ton pot, tu as 8 secondes
           SauvegardeComplete();
    }

    deferral.Complete();
}

Facile non?

Laisser un commentaire