android - Perform requests with Retrofit inside custom Runnable -


मैं वॉली से Retrofit का उपयोग कर एक कस्टम कार्यान्वयन में माइग्रेट कर रहा हूं, लेकिन मैं अपने कार्यान्वयन में कुछ वॉली विशेषताओं को पसंद करता हूं, उदाहरण के लिए

RequestQueue.cancel (स्ट्रिंग टैग) < / P>

यदि अनुरोध अनुरोधित टैग है, तो यह एक बूलियन मान, mCanceled को सेट करके रद्द कर दिया गया है, चलाएँ विधि इस मान को जांचता है और यदि यह सत्य है तो वापस लौटाता है। इसे रिस्ट्रॉफ़्ट के साथ पुन: पेश करने में सक्षम होने के लिए, मुझे अपने कस्टम क्लास का उपयोग करने के लिए डिफॉल्ट के बजाय Runnable का उपयोग करने में सक्षम होना चाहिए, जहां मेरे पास mTag और m रद्द किए गए फ़ील्ड। इसके अलावा, वॉली भी ऐसे झंडे को सक्रिय थ्रेड के अंदर सेट करने में सक्षम था और उन्हें तुरंत बंद कर देता है। मेरा रद्द सभी विधि, जो मैंने पहले से लागू कर ली है, बस कतार में एक और कतार में नालियां निकालती है, लेकिन सक्रिय धागे तक पहुंचने में सक्षम नहीं है। क्या रिस्ट्रॉफ़्ट और थ्रेडपूल एक्सक्लोरर

मुझे लगता है कि मुझे एक अच्छा समाधान मिल गया है: अनुरोधों के runnable को अवरुद्ध करने के बजाय, मैं कॉलबैक निष्पादन को अवरुद्ध कर रहा हूं।

मैंने कॉलबैक इंटरफ़ेस बढ़ा दिया है:

  सार्वजनिक इंटरफ़ेस कस्टम कॉलबैक इन्टरफेस & lt; T & gt; कॉलबैक का विस्तार & lt; T & gt; {सार्वजनिक स्ट्रिंग getTag (); सार्वजनिक स्ट्रिंग सेटटैग (स्ट्रिंग टैग); सार्वजनिक शून्य रद्द करें (); सार्वजनिक बूलियन रद्द () है; }   

ताकि प्रत्येक कॉलबैक के टैग और एक रद्द ध्वज हो। फिर सफलता पद्धति से शुरू होती है:

  सार्वजनिक वर्ग कस्टम कॉलबैक & lt; कन्वर्टडेटा & gt; कस्टम कॉलबैक इंटरफ़ेस & lt; कन्वर्टेडडेटा & gt; {// विफलता ... @ ओवरराइड पब्लिक व्यर्थ सफलता (कन्वर्टडेटा सीडी, रिस्पांस रिस्पॉन्स) {यदि (रद्द किया गया है); // ....}}   

हर बार जब मैं एक नया अनुरोध करता हूँ, तो मैं कस्टम कॉलबैक को एक सूची के अंदर संग्रहीत करता हूं बस सूची को पुनरावृत्त करें और एक ही टैग वाले आइटम पर रद्द करें () कॉल करें।

Comments

Popular posts from this blog

c# - passing input text from view to contoller with FacebookContext using Facebook app -

ios - Does Core Data autoupdate a many to many relationship on saving -

Calling a C++ function from C# by passing a string with variable size to it -