2010-08-26 15 views
5

मुझे आश्चर्य है कि वेबव्यू एक विशेष यूआरएल कैसे लोड करता है। क्या यह एक नया धागा बनाता है या यूआर थ्रेड में यूआरएल लोड करता है? कारण मैं यह पूछ रहा हूं कि जब मैं वर्तमान गतिविधि (वर्तमान गतिविधि की ऑनक्रेट विधि में) से एक गतिविधि लॉन्च करता हूं तो मुझे कुछ अजीब वेकअप लॉक समस्या का सामना करना पड़ रहा है जो उस पर वेबव्यू बनाता है क्रिएट विधि और loadUrl विधि का उपयोग करके एक यूआरएल लोड करता है। तो जब मैं इस गतिविधि के साथ किया जाता हूं और इसे लॉन्च करने वाली गतिविधि पर वापस जाता है, तो इसे पुनरारंभ किया जाता है क्योंकि वेकअप लॉक समय समाप्त हो गया था।
मैंने इसे गुगल किया और पाया कि यदि किसी गतिविधि की क्रिएट विधि बहुत अधिक समय लेती है तो इस प्रकार की समस्या हो सकती है। क्या आप में से किसी को वेबव्यू से जुड़े इस तरह के मुद्दे का सामना करना पड़ा है? वास्तव में हर प्रकार की मदद के लिए सराहना की जाएगी।
यहां नमूना कोड है। क्या वेबव्यू की loadUrl विधि UI थ्रेड पर चलती है?

Activity A: 
class ActivityA { 
    onCreate(){ 
    initializeSomething(); 
    registerSomeEvents(); 
    startSomething(); 
    } 
    onSomeListener(){ 
    if(someFlag) { 
     startActivity(ActivityB); 
     //this will pause the current activity i.e. ActivityA 
    } 
    } 
} 
Activity B: 
class ActivityB(){ 
    onCreate() { 
    if(someFlag){ //someFlag is coming in intent 
    helper = createHelperX(); 
    } else { 
    helper = createHelperY(); 
    } 
    helper.pleaseHelp(); //this does the rest of thing using activity instance 
}

HelperX:

class HelperX(){ createHelper() { //setup layout views etc, no WebView here //and wait for user interaction //register some events } onSomeEvent(){ if(someOtherFlag) { startActivityForResult(ActivityB); //and pass some flag, now this flag will trigger HelperY } }

HelperY: class HelperY(){ createHelper() { //setup views etc , this contains a WebView and calls loadURL. } }

+0

हाय, मैंने वेब व्यू (और loadUrl) का उपयोग किया है और कभी भी किसी भी समस्या का सामना नहीं किया है (यहां तक ​​कि XML पर समान रूप से XML पार्सिंग भी किया गया है)। आप अपने क्रिएट में और क्या कर रहे हैं? क्या आप एक सहकर्मी या बाल गतिविधि के रूप में गतिविधि शुरू कर रहे हैं? –

+0

तो startActivityForResult एक बाल गतिविधि बनाता है? अगर ऐसा होता है तो हाँ, मैं एक बाल गतिविधि शुरू कर रहा हूं। – bhups

+0

मैंने कुछ हद तक नमूना कोड जोड़ा है। – bhups

उत्तर

3

वेबव्यू में loadUrl विधि हैंडलर तंत्र का उपयोग करता है यानी यह यूआई थ्रेड में चलाएगा। जब गतिविधि रोक दी जाती है/रोका जाता है तो आपको webView.stopLoading() को कॉल करके डेटा लोडिंग को रोकना चाहिए।

+0

क्या कभी-कभी वेबव्यू किसी अन्य वर्ग से loadUrl को कॉल करते समय, कोई त्रुटि संदेश के बिना मेरे ऐप को क्रैश करना प्रतीत होता है? – NoBugs

+1

आप इसे एक अलग थ्रेड दस पर कैसे चलाते हैं क्योंकि जब आप इसे अपने स्वयं के धागे में डालते हैं तो यह कहने में विफल रहता है कि यह एक अलग धागे पर नहीं चल सकता – jonney

संबंधित मुद्दे