2011-07-29 6 views
8

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

मैं प्रत्येक कार्य ब्लॉक को मुख्य डेटा संदर्भ में कार्य को सहेजने की योजना बना रहा हूं, और कार्य समाप्त होने के बाद इसे हटा दें, और मुझे यह भी जांचने की आवश्यकता होगी कि ऐप शुरू करने के लिए कोई कार्य है या नहीं कर।

इस तरह के आवेदन बनाने का सबसे अच्छा अभ्यास क्या है? क्या कोई नमूना, ट्यूटोरियल या लाइब्रेरी है जिसका मैं पुन: उपयोग कर सकता हूं?

उत्तर

4

आपकी तकनीक को काफी काम करना चाहिए। उस वर्ग को डिज़ाइन करें जो आपके पृष्ठभूमि कार्यों को "अंधाधुंध" करने के लिए दिए गए कार्यों को निष्पादित करने के लिए प्रबंधित करता है।

इस कक्षा में अपने विभिन्न दृश्य नियंत्रकों से कार्य सबमिट करें। प्रस्तुत विधि

तरह
-(void) submitTask:(MyTask*) task { 

    task.completionHandler = ^{ [self.runningTasks removeObject:task];} 
    [self.taskQueue addOperation: task];  
} 

मैं यह सोचते हैं रहा है कि MyTask NSOperation की एक उपवर्ग है और कार्यपंक्ति एक NSOperationQueue है दिखना चाहिए। रनटास्क केवल एक एनएसएमयूटेबलएरे है जिसे डिस्क पर क्रमबद्ध किया जाता है (या तो कोरडाटा या जो भी प्रारूप आपको पसंद है) जब आप UIApplicationDidEnterBackgroundNotification प्राप्त करते हैं।

आप जीसीडी के साथ भी इसी तरह के डिजाइन को कार्यान्वित कर सकते हैं।