2012-02-11 11 views
7

का उपयोग करना मेरे पास एक गतिविधि है जो टैब का उपयोग करती है, और टैब फ़्रेगमेंट स्विच करते हैं। समस्या यह है कि टुकड़े होने पर लोड होने में कुछ सेकंड लगते हैं, इस प्रकार टैब स्विच करने में लगभग 1 या 2 सेकंड की देरी होती है। इसे ठीक करने के लिए मैं एक साधारण लोडिंग ग्राफ़िक या यहां तक ​​कि एक प्रगति संवाद प्रदर्शित करने का एक तरीका खोजने का प्रयास कर रहा हूं, ताकि टैब तुरंत बदलता है और कुछ दिखाता है कि सब कुछ पूरा होने तक चीजें लोड हो रही हैं।टैब बदलना धीमा/लग रहा है - Fragments

मेरे onCreateView टुकड़ा की विधि इस प्रकार है:

FrameLayout fl; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    fl = (FrameLayout) inflater.inflate(R.layout.text_layout, container, false); 

    doHeavyStuff(); 

    return fl; 
} 

मैं onStart() में doHeavyStuff() डालने की कोशिश की, लेकिन वह कुछ भी मदद नहीं की। और एक थ्रेड मदद नहीं करेगा क्योंकि doHeavyStuff() में विचार/जीयूआई में हेरफेर करना शामिल है।

किसी भी विचार पर मैं फ्रैगमेंट कैसे प्रदर्शित कर सकता हूं और "लोडिंग" जानकारी प्रदर्शित कर सकता हूं जबकि सब कुछ लोड हो जाता है?

धन्यवाद!

मैट।

उत्तर

8

onActivityCreated() में:

    शुरू
  • एक progress bar (या किसी भी प्रगति दिखा यूआई तत्व/s)।
  • HeavyStuffDoingAsyncTask निष्पादित करें जो नीचे समझाया गया है।

HeavyStuffDoingAsyncTask होना चाहिए:

  • doHeayStuff() के तर्क जो doInBackground विधि में ui अपडेट नहीं होता।
  • publishProgress()doInBackground() से प्रत्येक बार जब आप ui को अपडेट करना चाहते हैं तो कॉल करें।
  • onProgressUpdate विधि में यूआई अपडेटिंग तर्क लागू करें।
  • onPostExecute विधि में प्रगति पट्टी को रोकें।

शुभकामनाएं।

+0

मैं केवल() onCreateView में दृश्य बढ़ा-चढ़ाकर कर रहा हूँ स्थापित करने के लिए कोशिश करते हैं और वह भी laggy है। तो क्या मुझे बेहतर प्रदर्शन के लिए उपरोक्त कोड को बदलना चाहिए? – Husyn

+0

क्या आप सिर्फ दृश्य को बढ़ाने के अलावा कुछ भी कर रहे हैं? विचारों को populating की तरह आदि,? यदि ऐसा है, तो आपको laggy व्यवहार से बचने के लिए onrereView() के बाहर populating भाग करना चाहिए। – 500865

+0

नहीं, मैं केवल दृश्य को बढ़ा रहा हूं। वापसी inflater.inflate (R.layout.setting_list_layout, कंटेनर, झूठा); क्रिएटिव्यू() पर एकमात्र पंक्ति है; – Husyn

0

pager.setOffscreenPageLimit(no_of_fragments or pages); 
संबंधित मुद्दे