2014-11-25 11 views
5

Ich verwende den BackgroundUploader, um Bilder/Videos von der CameraRoll auf einen Speicherdienst hochzuladen. Dies ist eine WinRT-App auf Windows Phone 8.1Windows Phone 8.1 - BackgroundTransferStatus für BackgroundUpload

Das funktioniert gut, bis eine große Anzahl von Dateien hochgeladen werden. Ich habe erwartet, dass es Probleme mit der Akku- und CPU-Auslastung gibt, daher überprüfe ich den BackgroungTransferStatus aller UploadOperationen und wollte dem Benutzer eine Nachricht anzeigen, wenn der Status PausedSystemPolicy auftritt. Dies ist der erwartete Status, wenn das Telefon einen Upload pausiert.

Mein Problem ist, dass, während der Upload definitiv angehalten zu sein scheint (es sendet keine http Beiträge) der Status weiterhin "Running" sagen. Darüber hinaus hat das Abbrechen des Upload-Vorgangs keine Auswirkung. Es setzt sich immer noch dort hin und sagt "Running" mit keine Bytes gesendet und keine Antwort erhalten. Irgendwann wird das Hochladen wieder aufgenommen, aber wir scheinen schnell das Limit zu erreichen, das das Problem darstellt, und wir pausieren erneut. Ich verstehe die Notwendigkeit für Grenzen, es ist die Benutzererfahrung, die mir Sorgen macht.

Warum hat ein angehaltener Upload immer noch den Status "Running"? Hat jemand ähnliches erlebt?

+0

Ich habe ein Problem, dass UploadOperation überhaupt keine Rückrufe auf einem Nokia Lumia 520 gibt. – Perfection

Antwort

0

Dies kann vorkommen, wenn mehrere Downloads bereits ausgeführt werden.

Sagen wir, 5 Downloads laufen, und Sie eine sechste Warteschlange. Der sechste Download startet nicht sofort, wenn Sie ihn nicht mit BackgroundTransferPriority.High markieren. Der Status des Vorgangs wird als ausgeführt angezeigt, aber er beginnt erst mit dem Senden oder Empfangen von Daten, wenn ein Steckplatz verfügbar ist. Das Anhalten einer Operation wird nicht sofort wirksam, wenn sich die Operation in der Warteschlange befindet. Sobald die Operation jedoch aktiv wird, wird die Pause-Anweisung auf die Operation angewendet.

Umgehen können Sie die Fortschrittsereignisse im Auge behalten. Wenn der Download keinen Fortschritt liefert, wissen Sie, dass er sich möglicherweise in der Warteschlange befindet.

+0

Danke dafür erklärt es die Situation, die ich sehe, wenn ich eine große Anzahl von Uploads und einige als PausedNoNetwork und andere als Laufen. Es ist jedoch nicht der Fall, dass einige den korrekten Status haben und andere nicht. Keines der Uploads macht HTTP-Anfragen, sondern alle haben den Status Running. Es ist wie, um auf das, was du erwähnt hast, zu ziehen, sie sind alle in der Schlange und niemand bewegt sich jemals zu aktiv. Würde eine Einschränkung der CPU-Zyklen in BackgroundTransfer verhindern, dass Aufgaben wie das Verschieben eines Uploads von der Warteschlange in den aktiven Modus ausgeführt werden? –

+0

Sie haben es bereits bei Ihrer Frage erwähnt. Die API erzwingt einige Upload- und Zeitbeschränkungen. Möglicherweise sehen Sie, dass Ihre Uploads pausiert sind, bis Sie diese Limits eingelernt haben. Oder fehlt mir etwas? – kiewic

Verwandte Themen