2014-09-29 79 views
1

這裏是我的情況:我有一個Windows Phone的應用程序8.1(MainApp),一個類庫,並在同一個解決方案在Windows運行時組件(BackgroundTask)。

當我加載我的應用程序時,我註冊了一個TimeTriggerBackgroundTask然後操作系統處理這個。這個任務有兩個事件,Run方法(在任務本身內)和TaskCompleted回調,這些回調是在任務完成後在我的類庫中收到的。當應用程序處於前臺或後臺時,兩個事件都會執行。
當應用程序關閉時,BackgroundTask仍然存在,因爲它是處理它的操作系統,它始終存在。問題是我想在執行任務的Run方法時執行我的類庫中的方法,但由於我沒有我的應用程序的實例,我無法執行此操作。

喚醒/啓動MainApp從後臺任務TimeTrigger後的Windows Phone 8.1

那麼,如何從我的BackgroundTask應用程序關閉時,從我的類庫或MainApp執行代碼?我是否可以從我的BackgroundTask中喚醒/啓動App到背景或前景?

回答

2

操作系統不允許您從後臺任務中打開您的應用程序,因爲這會違反用戶的前景體驗,因爲您會在未經他們同意的情況下更改它(這就是爲什麼Rob Caplan提到的敬酒會有意義的原因)。該TaskCompleted處理你提到在我看來,是爲了讓你讓你的UI(這將是對用戶可見)向註冊任務(前的最後完成的後臺任務情況下的反應:顯示更新的專輯封面,這是在您的應用程序處於前臺時在您的bg任務中下載)。

要運行您提到的類庫中的代碼以響應已完成的任務,只需引用類庫(必須支持winRT庫的引用(例如便攜庫)或將代碼移動到後臺任務winRT庫並在退出之前從IBackgroundTask.Run方法調用該代碼。

2

不可以編程方式打開主應用程序。這聽起來不像是有意義的,你的情況,但你可以展現一個通知,要求用戶打開應用程序。

否則,最好的辦法是設置一個需要處理的標誌,然後檢查下次用戶運行主應用程序。