5

मैं जानना चाहता हूं कि फ़ाइलों, एसिंक कार्य या सेवा को डाउनलोड करना बेहतर है?डेटा डाउनलोड करने के लिए Async कार्य बनाम सेवा

मेरे ऐप में आठ बटन हैं, जो एक एक डाउनलोड डाउनलोड शुरू करता है (जो डाउनलोड ~ 10 एमबी है)। जब उपयोगकर्ता डेटा डाउनलोड करने के लिए एक बटन या अधिक पर क्लिक करता है तो एसिंक कार्य या सेवा का उपयोग करना बेहतर होता है?

धन्यवाद!

उत्तर

5

किसी भी मामले में आपको AsyncTask का उपयोग करना चाहिए क्योंकि सेवा मुख्य (जीयूआई) थ्रेड में भी चलती है जहां कोई नेटवर्किंग नहीं की जानी चाहिए। सेवा या गतिविधि में AsyncTask चलाने के लिए चाहे आप पृष्ठभूमि में जारी रखना चाहते हैं या नहीं।

+0

धन्यवाद @StenSoft लेना देना नहीं है जब जाता है, तो क्षुधा पृष्ठभूमि या को जाता है उपयोगकर्ता किसी अन्य गतिविधि में बदल जाता है, async कार्य बंद हो जाता है? – Caaarlos

+1

नहीं, लेकिन सेवा के बिना, पृष्ठभूमि में किसी भी समय सिस्टम द्वारा पूरे आवेदन को मार दिया जा सकता है। – StenSoft

+0

हम्म मुझे पता है मैं समझता हूं कि मुझे किस पल पर उपयोग करना है! तो मैं AsyncTask का उपयोग करूंगा। आपने मेरा संदेह हल किया, धन्यवाद स्टेनसॉफ्ट !! – Caaarlos

1

AsyncTask - AsyncTask धागे और/या संचालकों में हेरफेर, अगर आप ऐसा कर सकते हैं Looper और सामान के साथ बेहतर क्यों परेशान? AsyncTask को थ्रेड और हैंडलर के चारों ओर एक सहायक वर्ग के रूप में डिज़ाइन किया गया है, और इसे आदर्श रूप से छोटे परिचालनों (कुछ सेकंड में कुछ सेकंड) के लिए उपयोग किया जाना चाहिए। .. आप उत्पादन मोड में कैसे बता सकते हैं कि लंबे समय तक नहीं लेना है? शायद खराब नेटवर्क, धीमी नेटवर्क, जाम नेटवर्क, फोन पुनरारंभ करना - और ये सब शायद आपके डाउनलोड को भ्रष्ट या अधूरा बना देंगे .. मैं ऐप्स का उपयोगकर्ता हूं, और जब मैं कुछ भी नहीं पर बंडल बर्बाद करता हूं तो मुझे परेशान हो जाता है ..

अगर आप मुझसे पूछते हैं, का उपयोग

सेवा - Service क्या एप्लिकेशन/स्क्रीन दिखाई दे रहा है पर ध्यान दिए बिना चलाने के लिए और अगर यदि केवल यह उपलब्ध है अगर डाउनलोड के साथ जारी नहीं करके सहेज यूआई के साथ संवाद बनाने के लिए किया जाता है, AsyncTask एक सामान्य थ्रेडिंग ढांचे का गठन नहीं करता है। हमेशा धागे का उपयोग करें, यह ठंडा है, हम सभी इसे प्यार करते हैं।

1

सभी उपरोक्त उत्तरों के अच्छे अंक हैं। लेकिन जीवन चक्र मुद्दा सबसे महत्वपूर्ण बात है जिस पर आपको विचार करना चाहिए। उदाहरण के लिए कहें कि आप asyncTask का उपयोग करते हैं। इसलिए उपयोगकर्ता डाउनलोड करना शुरू कर देता है और अचानक वह स्क्रीन को घुमाता है और क्योंकि आपने asyncTask जीवन चक्र को activity परऑपरेशन को लात मार दिया जाएगा और इसके परिणामस्वरूप बाध्यकारी 10 एमबी डाउनलोड होगा। इसलिए इस पर विचार करते हुए आपको जीवन चक्र चक्र और यूआई थ्रेड नेटवर्किंग मुद्दे को बनाए रखने के लिए service और asyncTask का उपयोग करना चाहिए।

अद्यतन: आशय-सेवा एक बेहतर समाधान है, क्योंकि यह अपने आप ही धागे में अनुरोध प्राप्त होते हैं और ऑफलाइन यह करने के लिए

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