2015-07-03 6 views
-1

Мое приложение обрабатывает необработанные push-уведомления, но оно обрабатывает их по-разному, когда оно выполняется на переднем плане или в качестве фоновой задачи.Отключение фоновой задачи

Прямо сейчас, когда приложение запускается, я проверяю, зарегистрирована ли задание bg, и если это то, что я не зарегистрировал задачу, и пусть приложение обрабатывает push-уведомления и когда приложение закрывается или приостанавливается. Я перерегистрирую задачу bg ,

Этот подход кажется мне не очень чистым. Есть ли лучший способ приостановить фоновую задачу, когда приложение активно, или способ проверить состояние приложения с IBackgroundTask?

+2

woah, что происходит с голосами? –

+1

Довольно простое решение - можете ли вы предоставить флаг в * LocalSettings *, который отвечает за состояние пользовательского интерфейса? Затем пусть ваш BTask проверяет флаг и решает, выполнять ли работу. Пользовательский интерфейс изменяет только флаг в настройках, тогда вам не нужно отменить BTask. – Romasz

+0

@ Romasz вы бы хотели, чтобы вы прокомментировали ответ, чтобы я мог принять его? –

ответ

1

Сначала проверьте, если ваша уведомление передается BackgroundTask как MSDN says:

Когда облачный сервис вашего приложения отправляет уведомление Windows, ваше приложение имеет возможность перехватывать и обрабатывать это уведомление перед ним отображает тост, обновляет плитку или значок или доставляет исходное уведомление в фоновое задание.

В случае, если у вас запущено приложение, вы должны иметь возможность перехватить уведомление перед тем, как перейти к фоновому заданию или в другом месте.

В случае, если вы хотите, чтобы дифференцировать работу фоновой задачи, в зависимости от пользовательского интерфейса, вы можете предоставить флаг в LocalSettings, который отвечает за состояние пользовательского интерфейса, то пусть ваш BTask проверить флаг и решить, если для выполнения работы.

Пользовательский интерфейс только изменяет флаг в настройках, тогда вам не нужно отменить регистрацию BTask.

+0

Вот что я подумал, но сейчас происходит следующее: мое приложение получает необработанное уведомление, обрабатывает его, и только после этого я получаю тост из моей фоновой задачи. Это может иметь какое-то отношение к тому факту, что приложение не сфокусировано сразу после обработки необработанного уведомления. Теперь, когда я знаю, что передняя часть должна быть в состоянии перехватить событие, мне нужно будет сыграть с ним. –

+1

О, мужчина, еще раз спасибо. Я точно понял, что случилось. Мне не хватало 'e.Cancel = true;' на полученное событие push-уведомления моего пользовательского интерфейса. –

Смежные вопросы