J'essaie d'utiliser Extended Execution sur mon application Windows 10 UWP à des fins de localisation. Il y a beaucoup d'exemples de ceci en ligne. J'utilise essentiellement ce bloc de code commun.L'exécution étendue de Windows 10 Mobile App continue à être refusée
using (var session = new ExtendedExecutionSession())
{
session.Reason = ExtendedExecutionReason.LocationTracking;
session.Description = "Tracking your location";
session.Revoked += NewSession_Revoked;
var result = await session.RequestExtensionAsync();
switch (result)
{
case ExtendedExecutionResult.Allowed:
await StartLocationTrackingAsync();
break;
default:
case ExtendedExecutionResult.Denied:
//Notify user or log this.
break;
}
}
Ce bloc de code est exécuté dans le gestionnaire d'événements Suspending pour mon application, comme ceci:
public Scenario1()
{
this.InitializeComponent();
Application.Current.Suspending += Current_Suspending;
}
private async void Current_Suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e)
{
//Do my extended execution request here.
}
La première question que j'avais été, je ne pouvais pas cet événement à même le feu, mais je lis sur SO que VS ne suspendra pas votre application pendant le débogage. Donc, je l'ai forcé à suspendre en utilisant les événements Lifecycle dans VS. Maintenant, je reçois l'événement Suspending à chaque fois, ce qui est bien. Cependant, lorsque je demande la session d'exécution étendue, elle est refusée à chaque fois. J'ai essayé sur l'émulateur et sur mon appareil physique W10 mobile, plusieurs fois à chaque fois, il est refusé.
Pourquoi est-ce? Comment puis-je l'obtenir pour être autorisé?
Merci!
merci pour la réponse.J'avais lu l'article auquel vous avez donné un lien, mais celui-ci et tous les autres documents que je lis n'expliquent pas ce que vous avez fait, à savoir où demander la session étendue. Je l'ai déplacé comme vous l'avez suggéré et ça a marché! C'est maintenant autorisé. Cependant, nouveau problème, il est autorisé ainsi ma méthode StartLocationTrackingAsync est appelée et tout est bon quand il est au premier plan. Cependant, quand je suspends l'application, tout s'arrête de fonctionner. J'arrête d'obtenir mes événements OnPositionChanged du GeoLocator. Quand je reprends, ça recommence à fonctionner. Ai-je manqué une autre étape dans la configuration? –
Le suivi de l'emplacement d'exécution étendue n'est pas conçu pour l'exécuter en arrière-plan, mais interagit régulièrement avec le localisateur géographique au premier plan. Si vous voulez une exécution bg, vous devrez utiliser une tâche bg ou un service d'application. –
D'accord, compris. Mais pouvez-vous s'il vous plaît répondre à une autre question? J'ai le géolocuteur positionné Evénement élévateur soulevant pas sur l'intervalle de temps, mais plutôt sur la distance et il est fixé à 100 mètres. J'ai besoin de l'événement pour soulever ceci souvent parce que j'emploie l'escrime de geo. Je pensais avoir lu que les tâches de fond ne feraient que x nombre de minutes, ce qui est beaucoup trop long pour moi. Est-ce vrai? Idéalement, j'ai un gestionnaire d'événements qui soulève comme je le fais au premier plan. Avec un bg, je comprends que je vais devoir interroger l'emplacement. Puis-je le faire en quelques secondes avec l'une des approches? –