2017-01-30 43 views
4

我想知道遠程設備調用的後臺任務的侷限性。我在微軟文檔中發現的所有內容都是30秒後臺任務的通用限制。UWP中遠程應用程序服務後臺任務的侷限性

但是我簡單的測試表明,它不是從其他設備稱爲應用服務的情況。 (我不知道規則的應用服務,雖然我不包括他們在我的測試。)

這裏是我的測試方法:

我把這個代碼的應用程序的OnBackgroundActivated並註冊了TimeTrigger後臺任務。

  for (int i = 0; i < 100; i++) 
      { 
       Common.ToastFunctions.SendToast((i * 5).ToString() + " seconds"); 
       await System.Threading.Tasks.Task.Delay(TimeSpan.FromSeconds(5)); 
      } 

(而且我得到了延期所以任務將不會意外,因爲await操作關閉)

我Toast通知20-25秒,並沒有什麼之後。所以這個過程在30秒內被殺死,這與官方文件一致。

然後我把完全相同的代碼在RequestReceived事件我AppServiceConnection的,而這種代碼OnBackgroundActivated(基本上設置RequestReceived事件,並得到延期:

 this._backgroundTaskDeferral = args.TaskInstance.GetDeferral(); 
     args.TaskInstance.Canceled += OnTaskCanceled; 
     var details = args.TaskInstance.TriggerDetails as AppServiceTriggerDetails; 

     if (details?.Name == "com.ganjine") //Remote Activation 
     { 
      _appServiceconnection = details.AppServiceConnection; 
      _appServiceconnection.RequestReceived += OnRequestReceived; 
      _appServiceconnection.ServiceClosed += AppServiceconnection_ServiceClosed; 
     } 

然後我創建一個連接併發送了一些數據從這個後臺任務從另一個設備(使用羅馬APIs)

這一次,它沒有停止30秒之前。我的循環是100迭代,我得到了敬酒指示後臺任務沒有停止,是能夠運行〜500秒

但是,這是我的循環,它可能還有一個更長的循環更持續更多的

這是預期的行爲?從遠程設備調用的AppService後臺任務的確切限制是什麼?

更新:似乎遠程應用程序(誰調用此後臺任務)需要保持打開狀態。 (可能是因爲連接對象應該保持活着?)。如果關閉它,後臺應用程序服務將在幾秒鐘後終止。

回答

5

這是預期的行爲?從遠程設備調用的AppService後臺任務的確切限制是什麼?

是的。應用服務的生命週期很長。它不限於30秒。如果調用的應用程序被暫停,應用程序贊助的應用程序服務將被終止。它也沒有內存限制,但如果機器資源本身不足,可能會導致啓動失敗或服務終止。

你可以得到從視頻更多細節Channel9的:App-to-App Communication: Building a Web of Apps

App-to-App Communication

+0

所以在手機上的應用程序服務將保留沒有時間限制的開放,只要從PC調用者的應用程序保持打開狀態,對不對? (除非電話因資源不足而終止服務) –

+0

@MahdiGhiasi是的。 –