2014-01-08 3 views
0

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

Я знаю, что для этого мне нужно использовать событие OnObscured из класса App. Однако он запускается только тогда, когда приложение находится на переднем плане, но не в фоновом режиме.

Итак, я хотел бы знать, существует ли какой-либо способ обнаружить состояние телефона, когда приложение запускает фон.

Я подумал, что это будет сумасшедшим, но это доступ к API-функциям, который не разрешается использовать, когда телефон находится в заблокированном экране, а затем поймать исключение и, при этом, получить, если телефон активен или спать.

Я открыт для новых идей.

ответ

1

Я выяснил простую вещь - возможно, это поможет вам:
Я предполагаю, что вы уже отключили Idle Detection, чтобы выполнять вычисления в фоновом режиме.
Итак, почему бы не создать переменную, в которой вы сохраняете состояние приложения? Поскольку вы должны сначала запустить свое приложение, поэтому он переходит на передний план и когда вызывается Obscured и IsLocked = true, задайте переменную. Затем вы можете проверить его, когда вы хотите:

public MainPage() 
{ 
    InitializeComponent(); 

    App.RootFrame.Obscured+=RootFrame_Obscured; 
    App.RootFrame.Unobscured+=RootFrame_Unobscured; 
} 

private bool AppIsLocked = false; 

private void RootFrame_Unobscured(object sender, EventArgs e) 
{ 
    if (AppIsLocked) AppIsLocked = false; 
} 

private void RootFrame_Obscured(object sender, ObscuredEventArgs e) 
{ 
    if (e.IsLocked) AppIsLocked = true; 
} 
+0

Проблема заключается в следующем: если мое приложение запущено, а затем я нажимаю кнопку Windows на устройстве, оно будет отображаться на фоне, а затем, если я заблокирую экран, мое приложение не обнаружит его. Я попытался использовать этот код, но поскольку приложение находится в фоновом режиме, прежде чем блокировать экран, скрытые события не работают. – programmer23

+0

При нажатии кнопки «Пуск» или «Поиск» (или пусковых установок) ваше приложение переходит в состояние покоя или надгробия и НЕ работает в фоновом режиме (все потоки остановлены)! Вы должны прочитать дополнительную документацию http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff817008%28v=vs.105%29.aspx;) – Romasz

+0

Если вам нужна запланированная задача или другие решения для работы в фоновом режиме вам может понадобиться фоновый агент: http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202942%28v=vs.105%29.aspx – Romasz