मैं एक WebView जो मैं AsyncTask.doInBackground में loadUrl साथ प्रारंभ की है। मैं इसे नीचे की तरह प्रारंभ:विजेट पोस्ट() बनाम हैंडलर पोस्ट() के बीच क्या अंतर है?
webView.post(new Runnable() {
@Override
public void run() {
webView.loadUrl(authURL);
}
});
AsyncTask(), समस्या यह है कि समय वेबपेज के सबसे लोड नहीं हो रहा है मैं सफेद स्क्रीन देख Activity.onCreate में पिछले के रूप में क्रियान्वित किया जाता है। यदि मैं वेबव्यू को हैंडलर से बदलता हूं तो सब ठीक है। मुझे यहां क्या समझ नहीं आ रहा है?
loadUrl कॉल करने से पहले मैं सर्वर से इस url प्राप्त करने की जरूरत है। मुझे पता है कि कुछ और कोड जटिलता शुरू करके मैं इसे PostExecute पर कर सकता हूं। मुझे लगता है कि पूरी समस्या View.post() के लिए क्या दस्तावेज़ कहती है उससे संबंधित है: "यह विधि केवल यूआई थ्रेड के बाहर से ही लागू की जा सकती है जब यह दृश्य विंडो से जुड़ा होता है।", लेकिन मैं नहीं देखता यह मेरे मामले में कैसे हो सकता है। – marcinj
अपने दृश्य जुड़े होते हैं के बारे में सुनिश्चित नहीं हैं, लेकिन आप निश्चित रूप से 'onPostExecute से बुला किया जाना चाहिए()'। जोड़ा गया जटिलता यूआरएल की सूची लौट रही है या उन्हें एक क्षेत्र में सहेज रही है। इसके अतिरिक्त, आप इसे 'ऑनस्टार्ट()' से कॉल करना चाहते हैं जहां दृश्य निर्माण को समाप्त होने की गारंटी है। –
धन्यवाद, मैंपोस्टएक्सक्यूट पर उपयोग करूंगा – marcinj