[UWP] WinRT BackgroundAudio 的行為 (二)

目前正在用 UWP 用 BackgroundAudio 來撥音樂遇到的一些狀況 第二篇

最近再調整一些 Player 的問題,原因是發現在 Desktop 播歌到一半按下暫停並且把 App 縮到最小後,回來會發現按下播歌會失靈或者進度條沒有動,
這幾天在調整這問題,才發現 BackgroundAudio 一些事情

1. 前景播歌暫停後,縮到最小,一分鐘後,BackgroundTask 就會收到 Cancel,Cancel 的原因是 SystemPolicy
2. 前景播歌暫停後,縮到最小,一段時間後(沒特別抓精確的時間,我看 log 我是縮到最小了20分鐘),把 App 帶回前景,看 Log 竟然看到 OnLaunch 不是 OnResume !!不過回來速度很快沒特別感覺,所以 desktop 還是有機會被 terminated 的!
3. BackgroundTask 的 life cycle event 上的誤解,我們在 BackgroundTask 的程式碼裡面通常都會有這兩行

taskInstance.Task.Completed += OnBackgroundTaskCompleted;
taskInstance.Canceled += OnBackgroundTaskCanceled;

其實收到 Cancel 之後也是會收到 Complete,之前以為是"正常"結束才會收到 Complete,所以不要把你覺得是"正常"結束的程式碼放在這邊

然後 1. 的狀況在 Mobile 上不會遇到... 囧

所以說... 王道的解法是... 用 14939 的 single process Mode 就好啦!!!但是... 根據我們在 server 上看到的紀錄,在 10586 的人還是滿多的啊~~~(崩潰
所以短時間內要改成 single process mode 是不太可能的 O_Q

PS: 覺得 1. 的狀況不知道是不是 Bug... 幹嘛沒事 cancel 我的 BackgroundTask 啊~~~~~~我只是暫停播歌啊!!!