मैंने कई धागे खोजे हैं और अभी भी मेरे प्रश्न का उत्तर नहीं मिल रहा है। मैं Android
ऐप पर काम कर रहा हूं जो WebView
का उपयोग करता है। मेरी onCreate()
मेंक्या वेबव्यू सेवस्टेट() जावास्क्रिप्ट चर/पर्यावरण को संरक्षित करता है?
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
webView.saveState(savedInstanceState);
}
और
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
webView.restoreState(savedInstanceState);
}
मैं भी इस राशि:
मैं WebView
राज्य इस तरह बचाने के लिए onSaveInstanceState()
और onRestoreInstanceState()
का उपयोग
public void onCreate(Bundle savedInstanceState) {
... other code ...
if(savedInstanceState != null){
webView.saveState(savedInstanceState);
}else{
webView.loadUrl("http://mypage");
}
}
समस्या : ऐसा लगता है कि WebView
को पुनर्स्थापित करना Javascript
चर/पर्यावरण/कार्यक्षेत्र को पुनर्स्थापित नहीं करता है। जब पृष्ठभूमि में ऐप मारा जाता है और फिर बहाल किया जाता है, तो संपूर्ण जावास्क्रिप्ट सभी ऑब्जेक्ट्स/चर के साथ चला जाता है। जावास्क्रिप्ट कोड नाम-दूरी है, यानी window.utilitiesPack
, window.eventHandlers
, window.automation
, आदि और वे अपरिभाषित हैं। JQuery
और अन्य जावास्क्रिप्ट प्लगइन्स का उपयोग किया जाता है: उन सभी को पुनर्स्थापित करने के बाद अपरिभाषित प्रतीत होता है। असल में पूरी जावास्क्रिप्ट बहाल नहीं किया जाता है।
क्या कोई पुष्टि या अस्वीकार कर सकता है कि यह वास्तव में है (जावास्क्रिप्ट सहेजा नहीं गया है)? यदि संपूर्ण जावास्क्रिप्ट वर्कस्पेस सहेजा नहीं गया है, तो WebView.saveState()
वास्तव में क्या करता है? क्या जावास्क्रिप्ट ऑब्जेक्ट्स को संरक्षित करने के लिए मौजूदा एपीआई का उपयोग करने के लिए कुछ आसान/सुरुचिपूर्ण तरीका है?
// ============================================ ==========
अद्यतन 1: तो समस्या बनी हुई है। सबसे महत्वपूर्ण कठिनाई यह है:
परिणामस्वरूप मैं कैमरा Intent
लॉन्च कर रहा हूं। जब तस्वीर ली जाती है, तो ऐप WebView
गतिविधि पर वापस आ जाता है और कुछ डेटा चर के साथ HTML5 LocalStorage
अपडेट करने के लिए जावास्क्रिप्ट का उपयोग करना चाहिए।
WebView
के साथ मुख्य गतिविधि कैमरा गतिविधि प्रदर्शित होने पर मारे गए, इसलिए जब हम वेबव्यू पर वापस आते हैं, तो अब जावास्क्रिप्ट नहीं है और कोई भी फ़ंक्शन मैं एंड्रॉइड कोड से कॉल नहीं कर सकता। यह हर बार Galaxy S3
पर होता है। यह अभी भी अन्य फोन पर होता है, लेकिन तस्वीर लेने पर हर बार नहीं।
पता नहीं क्या यहां करना है। कैमरे के इरादे से तस्वीर ले जा रही है, जबकि किसी भी तरह से मुझे राज्य को बनाए रखने के लिए वेबव्यू के साथ मुख्य गतिविधि करना होगा। क्या किसी को पता है कि यह कैसे प्राप्त किया जा सकता है?
"क्या कोई पुष्टि कर सकता है या अस्वीकार कर सकता है कि यह वास्तव में है" - क्या आपने इसे आजमाकर इसकी पुष्टि करके पुष्टि नहीं की और यह वास्तव में क्या हुआ? – millimoose
(प्रलेखन का अर्थ यह है कि जो बचाया गया है वह 'वेबबैकफोर्डलिस्ट' है।) – millimoose
"क्या आपने इसे अभी कोशिश करके इसकी पुष्टि नहीं की और यह वास्तव में क्या होता है?" मैं बस विश्वास नहीं कर सकता कि पूरी जावास्क्रिप्ट सहेजा नहीं गया है। मुझे आशा है कि मैं कुछ समझ नहीं रहा हूं क्योंकि यदि ऐसा है, तो यह उन ऐप्स के लिए ऐसी सीमा है जो जटिल जावास्क्रिप्ट फ़ंक्शन के साथ वेबपृष्ठों का उपयोग करते हैं। – user2113581