क्या टॉम्बस्टनिंग और बैक कुंजी को सही तरीके से संभालने के लिए सबसे अच्छा अभ्यास है?निष्पादन कारणों से टॉम्बस्टनिंग और बैक कुंजी को सही तरीके से संभालना?
जैसा कि यह एमएसडीएन डॉक्यू में बताया गया है, आपको OnNavigatedFrom
विधि में क्षणिक डेटा को सहेजना चाहिए। ठीक है, तो जब राज्यों को तोड़ने के लिए राज्यों को बचाने के लिए कोड स्पष्ट है।
लेकिन अब यदि आप पिछली कुंजी दबाते हैं तो OnNavigatedFrom
विधि भी कॉल की जाती है और यदि आप अतिरिक्त चेक नहीं जोड़ते हैं, तो आप पहले राज्यों को शब्दकोश में सहेज लेंगे और इसके तुरंत बाद पृष्ठ नष्ट हो जाएगा। और फोन ऐप्लिकेशंस पेज। स्टेट डिक्शनरी भी होगी। तो बचत कोड पूरी तरह से सीपीयू, डिस्क और बैटरी समय बर्बाद है। जब कहीं और जाएंगे/वापस पेज से नहीं बल्कि जब एप्लिकेशन tombstoned हो जाता है OnNavigatingFrom
केवल बुलाया जाएगा:
यह वही है मैं इसे रोकने के लिए किया गया है:
protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
{
// when navigating back
if (e.NavigationMode == System.Windows.Navigation.NavigationMode.Back)
{
backKeyPressed = true;
}
}
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
if (backKeyPressed)
{
// Don't save states on back key!
backKeyPressed = false; // set it anyway
return;
}
// Tombstoning
// save objects
this.SaveState("text", someText);
...
}
आपको बता दें कि।
साइड नोट: दिखाया गया कोड केवल उन पृष्ठों को कवर करता है जो केवल वापस नेविगेट कर सकते हैं। Thats क्यों मैंने वापस जोड़ा OnNavigatingFrom
पर दबाया गया। यदि पृष्ठ किसी अन्य पृष्ठ पर नेविगेट कर सकता है तो आपको अतिरिक्त चेक की आवश्यकता है।
- क्या आपके द्वारा बनाए गए प्रत्येक पृष्ठ के लिए ऐसा करने का कोई बेहतर तरीका है?
- अब मुझे वास्तव में
backKeyPressed
चर जोड़ने और मेरे द्वारा बनाए गए प्रत्येक पृष्ठ पर जांचना है? - क्या ढांचा हमारे लिए डेवलपर के लिए कुछ प्रदान नहीं करना चाहिए, इसलिए हमें इसके बारे में ज्यादा चिंता करने की ज़रूरत नहीं है?
इस बारे में आपके विचार क्या हैं?
संपादित करें:
अद्यतन प्रश्न यह स्पष्ट बनाता है।
नेविगेशन मोड के साथ संकेत के लिए धन्यवाद। यह अच्छा होगा अगर भविष्य में यह व्यवहार सरल हो जाएगा। कुछ ऐसा है: NavigationMode को OnNavigatedFrom या टॉम्बस्टनिंग या उसके जैसा कुछ नया तरीका जोड़ें। तो हमें एक अलग backKeyPressed चर का उपयोग करने की आवश्यकता नहीं होगी। – Buju
हाँ, यह टू-डू सूची पर है :-) –
अच्छा धन्यवाद! :) – Buju