什麼是可靠(並且立即)檢測用戶是否用ALT-F4或關閉手勢關閉了應用程序的方法?如何檢測用戶是否已關閉了一個winrt應用程序
回答
根據Application Lifecycle文檔,無法檢測到此事件(請參閱「應用程序關閉」下的部分)。使用ApplicationData類可以最好地管理這種類型的狀態。
對於我的具體問題,並不是一個確切的答案,而是一種解決了我發佈我的問題的具體問題的方法。也許這可以幫助別人:
註冊到Window.CoreWindow.VisibilityChanged
:
Window.Current.CoreWindow.VisibilityChanged += CoreWindow_VisibilityChanged;
如果能見度已更改爲false,這可能是由於應用程序的關閉。保重,本次活動還將激發了許多其他的原因,比如通過使用Alt-Tab窗口的變化:
void CoreWindow_VisibilityChanged(CoreWindow sender, VisibilityChangedEventArgs args) {
if(!args.Visible){
// Action here
}
}
請注意:我懷疑MS已經明確地沒有提供,我一直在尋找一個事件,因爲在用戶關閉應用程序的那一刻,嚴重的操作將導致流暢的用戶體驗。不過,我認爲有資格的情況下,這樣的事件是有道理的,因此人們會使用像我在這裏提供的解決方法。如果您使用此解決方案或其他解決方法,請注意不要給系統造成沉重的負擔。
我必須同意這個答案。但是,我發現您還需要使用Unloaded事件,否則您可能會發現自己保存了舊頁面的狀態。我將添加我的筆記作爲可讀性的答案。 – swinefeaster
確切地說Windows.UI.Xaml.Window.Current.VisibilityChanged –
毫無疑問,如果應用程序暫停,您不希望始終保存狀態。這不會被稱爲「投票」(這是有點不好,在其他方面浪費)?在我的場景中,我有一個跟蹤剩餘時間的計時器,這是應用程序狀態的一部分,但我不希望將其存儲在每個計時器上。
所以,要做到這一點正確,你將需要:
- 軌道VisibilityChanged(爲說明原來的海報)
- 軌道空載(只要你導航返回從頁等) 當頁面已被卸載,所以你不保存舊的緩存頁面可能被掛在
更詳細地說明#3以上
這裏是爲我工作的代碼:
public void MyPage() // Constructor
{
Loaded += (sender, e) =>
{
if(!m_isLoaded)
{
m_isLoaded = true;
Window.Current.CoreWindow.VisibilityChanged +=
OnVisibilityChanged;
}
};
Unloaded += async (sender, e) =>
{
if (m_isLoaded)
{
m_isLoaded = false;
Window.Current.CoreWindow.VisibilityChanged -=
OnVisibilityChanged;
await SaveStuff();
}
};
}
protected void OnVisibilityChanged(object sender,
Windows.UI.Core.VisibilityChangedEventArgs e)
{
if (!e.Visible && m_isLoaded)
{
var dontAwait = SaveStuff();
}
}
// Called whenever the page is unloaded and state needs to be saved.
protected async Task SaveStuff()
{
await ThreadUtility.voidTask();
}
// Set to false when the page is unloaded (paused).
private bool m_isLoaded = false;
- 1. 檢測應用程序是否已關閉或暫停
- 2. 如何檢查應用程序是否已在android中關閉?
- 3. 如何檢測應用程序是否關閉
- 4. 如何檢測應用程序關閉?
- 5. 如果應用程序已關閉如何檢測/退出
- 6. 如何檢測SettingsFlyout已在Windows 8應用程序中關閉
- 7. 檢查應用程序是否已關閉
- 8. 如何檢測一個SubView已關閉?
- 9. Android,我如何知道應用程序是否已關閉
- 10. 檢測應用程序的所有選項卡是否關閉
- 11. 如何檢查用戶是否已經購買了應用程序?
- 12. 檢測用戶是否寫了關於應用程序的評論
- 13. 如何檢查用戶是否安裝了應用程序?
- 14. 檢測COM端口是否已關閉
- 15. 檢測Excel文件是否已關閉
- 16. Ruby:如何檢測套接字的一側是否已關閉
- 17. 如何檢測桌面應用程序是否已被修改?
- 18. 檢測,當應用程序被關閉
- 19. 檢測android應用程序的關閉
- 20. 檢測當Java應用程序關閉
- 21. 如何檢查Android應用程序是否關閉?
- 22. 如何檢查應用程序是否正在關閉android
- 23. 如何檢測用戶是否分享應用程序Url
- 24. 如何檢測用戶是否購買了我的應用程序?
- 25. 如何關閉應用程序是否關閉
- 26. 如何檢測用戶是否已經點燃了IAP?
- 27. 如何知道用戶何時關閉了Android應用程序?
- 28. 如何知道用戶何時關閉了Web應用程序
- 29. 如何檢測是否應用了EllipsisWord?
- 30. 如何在Safari中檢測是否安裝了應用程序
你指的是用戶關閉後它運行的代碼? – SLaks
@ SLaks,是的,直接在用戶關閉它之後,系統已經引發暫停事件之前 – HCL
這兩者之間是否有區別? –