एक ऐप में ऐसे हिस्सों हो सकते हैं जो अलग-अलग धागे पर चलते हैं और समाप्त होने पर कुछ ऑब्जेक्ट पर वापस कॉल करते हैं। एक सामान्य पैटर्न इस तरह दिख सकता है:Android पर एसिंक्रोनस कॉलबैक को संभालने के लिए अच्छी रणनीतियां क्या हैं?
1) एक दृश्य या टुकड़ा कुछ मॉडल को कॉल करता है। कॉल कुछ दृश्य या टुकड़ा
model.doSomething(context, new Runnable() {
public void run() { /* run on the main thread when model finishes */ }
});
2) एक मॉडल एक थ्रेड का उपयोग करता है या AsyncTask कि कुछ करता है से निकलती है और फिर बुला धागे पर कॉलबैक कॉल - एक हैंडलर
void doSomething(Context context, Runnable callback) {
Handler handler = new Handler();
// ...
// When finished (this is really done on some separate thread),
handler.post(callback);
}
3) का उपयोग करते हुए कॉलबैक कॉलिंग व्यू या फ्रैगमेंट के साथ कुछ नियंत्रण तर्क
कॉलबैक एक ऐसे दृश्य की स्थिति को छू सकता है जो किसी विंडो से जुड़ा हुआ नहीं है, जिससे ऐप में अस्थिरता हो सकती है।
इस स्थिति को संभालने के लिए कुछ अच्छी रणनीतियां क्या हैं?
धन्यवाद स्टीफन, मैं 2011 आईओएसएड ऐप पर एक नज़र डालेगा। एक सेवा ओवरकिल लगती है क्योंकि ऐसा लगता है कि संदेशों को सुरक्षित रूप से किसी दृश्य या टुकड़े पर पोस्ट करने का कोई तरीका होना चाहिए। मैं पोस्ट (...) का उपयोग करने के साथ प्रयोग कर रहा हूं, लेकिन मुझे अभी भी यह समझ में आ रहा है कि जब विंडो दिखाई नहीं दे रही है, और सामान्य रूप से एंड्रॉइड पैटर्न के मामले में यह कैसे काम करता है। –
यह ओवरकिल जैसा लगता है लेकिन जब भी आप इस तरह के कॉलबैक पैटर्न का उपयोग कर रहे हैं, तो आप आमतौर पर कुछ प्रकार के लंबे एसिंक कार्य को कर रहे हैं। चूंकि आमंत्रण और समापन के बीच एक बड़ा समय अंतर हो सकता है, इसलिए आपको चिंता करना शुरू करना होगा कि समय आपके राज्य को कैसे प्रभावित करेगा। गतिविधि जीवन चक्र में काम करते समय यह अधिक परेशानी हो जाती है क्योंकि आपकी गतिविधि की वर्तमान स्थिति में कोई गारंटी नहीं है। –