BackgroundTransfer внутри BackgroundTask
В моем приложении мне нужно синхронизировать некоторые данные на интервале TimeTriggered. Теперь я создал BackgroundTask с TimeTrigger, внутри этой задачи я выполняю операцию BackgroundTransfer. Это работает, но у меня есть некоторые вопросы по этому поводу.
Это хорошее решение, или есть лучшие для этого сценария?
Есть некоторые загадочные вещи исполнения. Если я развертываю приложение в качестве отладочной версии на своем телефоне, все работает как чудо, все операции переноса выполняются за одно выполнение BackgroundTask, это занимает +/- 15 минут. Теперь, если я разверну приложение на своем телефоне в качестве версии выпуска, BackgroundTask передает данные только в течение 1-2 минут и останавливается до следующего запуска TimeTrigger. Почему есть разница или почему это?
редактировать: ресурсоемкие задачи не вариант для меня, приложение построено на приложение магазина WinRT. Когда это ограничение от backgroundTask, как я могу выполнить такую операцию из фона?
edit2:@kiewic, я называю это ожидаемым, изменит это, но в чем же разница, так как это выполняется в фоновой задаче?
1 ответ
Вы должны различать BackgroundTask и BackgroundTransfer. Это две разные вещи.
Работа вашей фоновой задачи состоит в том, чтобы начать ваши фоновые передачи. Задача вашего BackgroundTransfer (операция загрузки или выгрузки) состоит в том, чтобы выполнять передачу независимо от вашего приложения.
Перевод не должен происходить в рамках BackgroundTask. Если вы позвоните в ожидании начала фоновой передачи, то дождитесь завершения загрузки. Если вы этого не сделаете, вы продолжите выполнение в рамках своей задачи (например, если вы находитесь в цикле, вы можете начать сборку и начать следующую загрузку).
После запуска фоновой передачи она управляется независимо от вашего приложения или какой-либо задачи операционной системой. Он может даже пережить перезапуск телефона.