2010-04-02 5 views
14

एंड्रॉइड एप्लिकेशन विकास में, मैं अक्सर कई स्थानों पर CallBack शब्द से गुज़रता हूं। मैं जानना चाहता हूं कि हमें तकनीकी रूप से बताने का क्या अर्थ है - और मैं अनुप्रयोगों में callback का उपयोग कैसे कर सकता हूं। मुझे इसे समझने और इसका उपयोग करने के लिए एक गाइड की आवश्यकता है।एंड्रॉइड में कॉलबैक?

उत्तर

13

मैं तकनीकी रूप

http://en.wikipedia.org/wiki/Callback_%28computer_science%29

"बिना जैसे कि जावा समारोह-मान तर्क, ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषाओं में पता है कि यह क्या मतलब है, बता हमें करना चाहते हैं, [कॉलबैक कर सकता है] एक अमूर्त वर्ग या इंटरफ़ेस को पारित करके अनुकरण किया जाए, जिसमें से रिसीवर एक या अधिक तरीकों को कॉल करेगा, जबकि कॉलिंग एंड एक ठोस कार्यान्वयन प्रदान करता है। ऐसी वस्तुएं कॉलबैक के प्रभावी रूप से बंडल होती हैं, साथ ही उन्हें डेटा को कुशल बनाने की आवश्यकता होती है। वे उपयोगी हैं विभिन्न डिजाइन को लागू करने में आगंतुक, पर्यवेक्षक, और रणनीति जैसे पैटर्न। "

मैं कैसे आवेदनों की कॉलबैक का प्रबंधन कर सकते

मैं पता नहीं इसका क्या मतलब है।

+0

मेरी सबसे खराब अंग्रेजी फिर से चिह्नित करने के लिए खेद है। वैसे भी आपने सही किया है। – Praveen

+0

स्पष्ट स्पष्टीकरण –

5

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

यह वास्तव में बहुरूपता के बारे में है।

जावा में, आप ऐसा करने के लिए एक इंटरफेस का उपयोग कर सकते हैं। तो सॉर्ट करने के लिए, इंटरफ़ेस IComparer और IComparable देखें।

5

कॉल करने योग्य इंटरफ़ेस को रननेबल के रूप में कोड के टुकड़े को चलाने के लिए उपयोग किया जा सकता है। हालांकि, कॉल करने योग्य परिणाम वापस कर सकते हैं और एक अपवाद की जांच फेंक सकते हैं।

अधिक जानकारी के लिए। http://developer.android.com/reference/java/util/concurrent/Callable.html

कॉल करने योग्य इंटरफेस का उपयोग करके आप एक तर्क के रूप में एक तर्क पारित कर सकते हैं मैंने समझने के लिए एक सरल कोड स्निपेट जोड़ा।

public class MainActivity<V> extends Activity { 


    Callable<String> doLogin=null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     doLogin=new Callable<String>() { //created but not called now. 

      @Override 
      public String call() throws Exception { 

       //make some piece of code 
       return "something"; //or false 
      } 
     }; 

     CheckSession checkSession=new CheckSession("sessionName"); 
     String sessionKey=""; 


     try { //we are sending callable to the DAO or any class we want 
      sessionKey=checkSession.getSessionKey(doLogin); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 



public class CheckSession{ 


    String sessionName=""; 
    Callable<String> func=null; 

    public CheckSession(String sessionName) { 
     super(); 
     this.sessionName = sessionName; 

    } 

    public String getSessionKey(Callable<String> doLogin) throws Exception{ 

     func=doLogin; 

     return (String) func.call(); 

    } 

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