2014-01-08 43 views
0

我想在手機處於鎖定屏幕模式時執行一些計算,無論應用程序位於前景還是背景。檢測Windows Phone空閒的方法

我知道爲了做到這一點,我需要使用App類中的OnObscured事件。但是,只有在應用程序處於前臺時纔會啓動,但不會在後臺啓動。

所以,我想知道是否存在任何方式來檢測手機狀態,而應用程序運行的背景。

我想到的東西,這將是瘋狂的,但訪問這是不允許使用的,而手機處於鎖定屏幕,然後捕獲異常,並與一個API特性,得到,如果手機被激活或睡覺。

我很樂意聽到新的想法。

回答

1

我想出了一個簡單的事情 - 也許它會幫助你:
我假設你已經禁用空閒檢測到在後臺運行的計算。
那麼爲什麼不創建你持有應用程序狀態的變量?由於您必須首先啓動您的應用程序,因此它會轉到前臺,並且在調用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