मैं ओकेएचटीपी 2.7.0 के साथ रेट्रोफिट 2-बीटा 2 का उपयोग कर रहा हूं।रेट्रोफिट 2/ओकेएचटीपी: सभी चल रहे अनुरोधों को रद्द करें
मैं Retrofit .client() विधि का उपयोग कर रहा है और सभी यह अनुरोध चल रहा है रद्द करने के लिए रेट्रोफिट से OkHttpClient
वस्तु पाने के लिए, मैं फोन कर रहा हूँ यह cancel(Object tag) विधि है, लेकिन अनुरोध अभी भी चल रहा रखने के लिए और मैं एक प्रतिक्रिया मिल।
यहां तक कि क्लाइंट के Dispatcher
के getQueuedCallCount() और getRunningCallCount() रद्द करने के बाद 0 लौटाएं()।
क्या ऐसा कुछ और है जो मुझे काम करने के लिए करने की ज़रूरत है? या यह OkHttp में एक बग हो सकता है?
एक कामकाज के रूप में, मैं ग्राहक के ExecutorService
पर shutdownNow()
पर कॉल कर रहा हूं लेकिन मैं क्लीनर समाधान पसंद करूंगा।
स्रोत कोड के माध्यम से जाने के बाद अब मैं समझता हूं कि यह क्यों काम नहीं करता है। मैं एक इंटरसेप्टर का उपयोग कर 'अनुरोध' पर टैग सेट कर रहा हूं इसलिए एक नया 'अनुरोध' ऑब्जेक्ट बना रहा हूं। 'OkHttpClient.cancel (ऑब्जेक्ट टैग) 'मूल' अनुरोध 'के बाद से कुछ भी नहीं करता है (जिस पर' रद्द करें ') को' डिस्पैचर 'के अनुरोध कतार में मौजूद होने के बाद से कॉल किया जाता है) अभी भी टैग सेट नहीं है। ऐसा लगता है कि रेट्रोफिट मूल 'अनुरोध' ऑब्जेक्ट पर टैग सेट करने के लिए किसी विधि या इंटरफ़ेस का पर्दाफाश नहीं करता है। –