Header Ads

ad728
  • New Updates

    Android App – The Basic Architecture


    Android App – The Basic Architecture

    जब हम Desktop Application Develop करते है , तब हमारे Application पर हमारा पूरा Control होता है , जिसके अंतर्गत हम हमारी जरुरत के अनुसार  कभी भी अपने Application के Main window को Launch कर सकते है व उसमें किसी Specific Child Window जैसे की Dialog Box को Open कर सकते है |

    यानी एक Desktop Application Develop करते समय हमारे Application के विभन्न Aspects पर हमारा पूरा Control होता है , जिसकी विभन्न जरूरतों को Operating System द्वारा किया जाता है |

    लेकिन हमारे Application का किसी भी अन्य Application के साथ Directly कोई भी Interaction नहीं होता , हालांकि अन्य Applications की विभन्न Requirements को भी पूरा कर रहा होता है |

    जबकि यदि हमें हमारे Application Program द्वारा किसी अन्य Application के साथ Interact करना हो तो ये सुविधा हमें एक Separate API (Application Programming Interface) जैसे की Java Database Connectivity (JDBC) या किसी अन्य Framework द्वारा प्राप्त होती है |

    Android Applications भी कुछ इसी तरह से काम करता है ,लेकिन Android Applications को थोड़ा अलग तरीके से Package किया जाता है  जो की जिस Phone पर इन Applications को Run किया जाए , उन Phone Devices पर किसी भी प्रकार का Software Crash जैसा issue पैदा  न हो |

    यानी प्रत्येक Android Application Crash – Registrant हो , इसलिए  उन्हें एक Specific तरीके से Package किया जाता है , जो की  निम्नानुसार विभन्न important Parts होते है |

    Views

    User Screen पर जो कुछ भी देखता है , उसे ही User Interface (UI) कहते है और user के सामने कौनसा User Interface दिखाई देगा , इसे Set करने की जिम्मेदारी Activity की होती है |

    किसी भी Android App में User Interface मूल रूप से दो Sub – Components के बने होते है , जिन्हें Views Layouts या View Groups के नाम से जाना जाता है |

    किसी Android App के User Interface (UI) Elements जैसे की Button , Label , TextBox , Radio Button , Checkbox आदि को views कहते है जो की Android App का User Interface Create करते है , ताकि User उस Android App से Interact कर सके |

    जबकि इन View Elements को Hold करने के लिए Container की तरह काम करने वाले अन्य Container Views को Layouts अथवा View Groups कहते है , क्योंकि एक User Interface , Multiple UI View Elements का Group होता है इसलिए इन Container Views को View Group भी कहा जाता है जो कि Group of views को Represent करता है |

    चुंकि Layout , अन्य UI View Elements का Container होते है , इसलिए ये मूल रूप से किसी Android app के Screen पर देखाई देने वाले View Elements के Pattern को Specify करते हुए इस बात को तय करते है कि विभन्न User Interface Elements Screen पर Visually (Height , Width , Position , etc …) किस तरह से दिखाई देंगें |

    उदाहरण के लिए Linear Layout Use करने पर इसके अंदर Render होने वाले विभन्न Use Interface Elements Vertically (एक UI Elements के ऊपर या निचे दूसरा ) अथवा Horizontally (एक UI Element के पहले या बाद में दूसरा ) Stack होते है जबकि Relative Layout Use करने पर इसके अंदर Render होने वाले विभन्न User Interface Elements अपने Parent अथवा Sibling UI Element के सन्दर्भ में Render होते है |

    Android Application के User Interface को XML Markups के माध्यम से ठीक उसी तरह से Define किया जाता है , जिस तरह से हम किसी Web page पर किसी Registration Form को HTML के <form> Markup द्वरा Define करते है |

    यानी जिस तरह से एक Web Browser का HTML Parser हमारे HTML Webpage के <form> Elements में Specify किए गए <button> , <input> , <label> आदि HTML Markups को Button , TextBox Label जैसे GUI Controls के रूप में Render करता है , ठीक उसी तरह से एक Android App के User Interface को हम जिन XML Markups का प्रयोग करते हुए Define करते है  , Android App का XML Parser उन XML Markups के आधार पर Android Device की Screen पर User Interface Controls को Display कर देता है |

    उदाहरण के लिए जब भी हम Relative Layout पर  आधारित कोई नई Activity Create करते है , उस Activity के साथ ही Automatically एक Layout view भी Create हो जाता है और उस Automatically create होने वाले view में Default रूप से निम्न Markups होते है |

     

    Create होने वाली View File मूलतः एक XML file होती है इसलिए किसी भी XML File की तरह ही इसकी शुरुवात भी निम्नानुसार <?xml/> Element से होती है |

     

    <?xml version=”1.0” encoding=”utf-8”?>

    जो Android Framework के XML Parser को इस बात की जानकारी देता है की Current File एक XML File है जो की Android App के Visual Part यानी GUI Part को Control करता है |

    साथ ही किसी भी Framework की तरह ही Android Framework में भी Files का Naming Convention महत्वपूर्ण  Role Play करता है | इसलिए इस File का नाम इसके साथ Create होने वाली Activity File के नाम से सम्बंधित होता है |

    उदाहरण के लिए जब MainActivity.java नाम का Activity File Create होता है , तो उसके साथ Create होने वाले Layout View File का नाम activity_main.xml होता है | इसी तरह से यदि हम हमारे Current Android App में Second Activity नाम की एक और Activity Create करें , तो Create होने वाली SecondActivity.java File के साथ जो Layout View File Create होता है , उसका नाम activity_second.xml होता है |

    हालांकि यदि हम चाहें तो Android Framework के इस Naming Convention को Follow न करते हुए इन नामों को न बदलते हुए Android Framework के Naming Convention  को ज्यों का त्यों Follow करें क्योंकि जब हम इन Naming Conventions को ज्यों का त्यों Follow करते है , तो Android Development के लिए हम जिस किसी भी IDE को Use कर रहें होते है , वह IDE हमारे लिए काफी Android Codes Automatically Generate कर देता है , जिससे हमारे App Development की Speed काफी बढ़ जाती है |

    चुंकि Android App का Layout  GUI Part , XML Markup आधारित Language द्वारा Create किया जाता है , जिसे Android Framework का XML Parser Parse करता है , इसलिए हम जब कोई नया Activity Create करते है , उसके साथ Create होने वाले Layout View में उपरोक्तानुसार Specified <Relativelayout../> <TextView../> नाम के दो Elements होते है जैसाकि हमने पहले बताया की Android App के User Interface मूलतः दो प्रकार के Sub Components Views Layout या Groupviews के बने होते है |

    अतः इस Automatically Generate होने वाले XML Code में <Relativelayout../> Element के प्रकार का Layout अथवा Group Views है , जो की <Text View …/> जैसे कई View Elements को एक Group के रूप में Contain करते हुए Create होने वाले Android App के User Interface को Organize करता है |

    अन्य शब्दों में कहें तो Layout/ Group Views Element स्वंय Visually दिखाई नहीं देता लेकिन Android App का User Interface कैसा दिखाई देगा और User Interface के विभन्न UI Elements  (Button , Textbox, Checkbox, RadioButton  Images etc..) Screen पर कहाँ Place होंगे और कैसे दिखाई देंगे , इस बात को तय करके User Interface को Organize करने का काम Layout / Groupviews Elements द्वारा ही तय होता है |

    Android Framework हमें कई प्रकार के Layout Views Provide करता है , जहां <RelativeLayout/> Android Framework द्वरा Automatically Generated Code का Default Layout View होता है और हम हमारे Android App के लिए अपनी जरुरत के अनुसार चाहे जो भी Layout View use करें , सभी में सबसे पहले हमें निम्नानुसार दो XML Namespaces को Specify करना जरुरी होता है , जो की Android के View Parser को इस बात की जानकारी देते है , की उन्हें किसी Mobile / Tablet Screen पर Android App के GUI को किस प्रकार से Render करना है |

    xmlns:android=http://schemas.android.com/apk/res/android

    xmlns:tools=http://schemas.android.com/tools

     

    चुंकि जब Android Framework का UI Part पूरी तरह से XML File द्वारा Control होता है , तब एक XML File में Specify किए जानेवाले विभन्न Elements की कुछ न कुछ Descriptions होती है , जिनके आधार पर XML Parser उस XML File की Parsing करता है , यानी XML File को Run करना है और Description के आधार  पर ही Output Generate करता है | इसी Description को XML Namespace के नाम से xmlns Attribute द्वारा Specify किया जाता है |

    Activity

    Activity एक User Interface (UI) Concept होता है जो सामान्यतः किसी Android Application की एक Single Screen को Represent करता है | इस User Interface Screen पर जरुरत  के अनुसार एक या अधिक Views हो सकते है लेकिन views का होना Compulsory नहीं होता | यानी एक ऐसा Android App भी हो सकता है की जिसकी Activity में कोई भी views न हो |

    किसी Activity को हम हमारे Android का एक ऐसा Part मान सकते है , जो User को कोई Action Perform करने में मदद करता है | सरल शब्दों में कहें तो Activity User Interface के रूप में वह माध्यम होता है , जो User Interactions के कारण Perform होने वाले विभन्न Actions को handle करता है |

    उदाहरण के लिए  जब User किसी Android App की किसी Screen पर दिखाई देने वाले किसी Button को Tap करता है , तो उस Tapping Action के Response में Perform होने वाले Task को इसी Activity Part में Specify Implement किया जाता है |

     

    Fragment

    जब किसी Android App की Screen इतनी बड़ी हो की उसकी सभी Functionalities को एक Single Activity में Manage करना कठिन हो , तो इस स्थिति में उस बड़ी Activity को कई छोटी – छोटी Sub- Activities में Divide कर दिया जाता है | इन्हीं छोटी – छोटी Sub – Activities को Fragments कहते है और एक Activity समान समय पर एक या अधिक Fragments को Screen पर Display कर सकता है |

    किसी Fragment को हमेशा किसी न किसी Activity में Embedded होना जरुरी होता है और जिस Activity में कोई Fragment Embedded होता है , उसकी Life Cycle का Direct Effect , Fragment की Lifecycle पर पड़ता है | यानी Parent Activity की Lifecycle का End हो जाए , तो Fragment की Lifecycle चाहे Run ही क्यों  न हो रही हो , उसका भी End हो जाता है | इसी तरह से जब Parent Activity pause होता है , तो उसके सभी Embedded Fragments भी Pause हो जाते है |

    किसी Fragment को अपनी Activity Layout में Insert करने के लिए हमें हमारे Activity की Layout File में <fragment > Element को Existing View Group के अंदर ही Use करना होता है अथवा अपने Application की Code File में Code के माध्यम से भी इसे Add किया जा सकता है |

     

    Intents

    Intents वास्तव में System messages होते है , जो की Android Platform को Device के अंदर  Running रखते है और उस Android Platform पर Run होने वाले विभन्न Applications को विभन्न प्रकार के Events के लिए Notify करते है |

    यानी जिस प्रकार से हमारे Computer System में Operating System विभन्न प्रकार के hardware Software Events को Trigger करके Application को कोई Specific Task Complete करने के लिए Notify करता है , ठीक उसी तरह से Android Device में किसी भी प्रकार के Hardware  State Change ( जैसेकि SD Card को Device में Insert या Remove करने ) अथवा Software State Change (जैसेकि SMS के रूप में नए Incoming Data के आने अथवा जाने या फिर Application के Menu Option को Touch करने आदि ) के रूप में विभन्न प्रकार के events के Trigger होने पर भी Android System , Android App को किसी Specific Task के Complete होने के लिए Notify करता है |

     

    Sevices

    Activities का Lifetime काफी कम होता है और वे कभी भी Shut-Down हो सकते है अथवा जरुरत के अनुसार उन्हने Close किया जा सकता है | जबकि Sevices वे Background Programs होते है , जो User कि जानकारी के बिना Background में Continually Run होते रहेते है |

    Services को हम Background Processes भी कह सकते है निम्न चित्रानुसार Windows OS के  Task Manager में दिखाई देने वाले Background proceses कि तरह मान सकते है , जिनका कोई User  Interface नहीं होता , बल्कि वे Background में Invisibly Run हो रहे होते है और विभन्न प्रकार कि System Application Related Requirements को Fulfill कर रहे होते है |




    उदाहरण के लिए जब हम हमारे Android Device पर कोई Music सुन रहे होते है , उसी दौरान हम अपने WhatsApp Application पर किसी को Reply भी कर रहे होते है अथवा Hangout App या Facebook App पर किसी के साथ Chat भी कर रहें है , लेकिन हमारा Music , Whatsapp , Facebook या Hangout App को use करते समय भी Contiuously Run हो रहा होता है , क्योंकि वह हमारी जानकारी के बिना Background में एक Service कि तरह Run हो रहा होता है |

    Service कि यही विशेषता है कि उनका कोई User  Interface होना जरुरी नहीं होता है और बिना User Interface के भी वे Background में Invisibly Run होते हुए हमारी किसी Requirement को पूरा कर रहे होते है |

    Android System , Local Services Remote Services के रूप में दो प्रकार कि Services Define कर सकता है | Local Services के रूप में जो Service Create कि जाती है , उसे Current Device का केवल वही Application Use कर सकता है , जिसने Service को Create किया होता है , जबकि Remote Service  के रूप में जिस Service को Create किया गया होता है , उसे उस Device के विभन्न Applications अपनी जरुरत के अनुसार use कर सकते है |

     

    Content provider

    ऐसे Data, जिन्हें Device के Multiple Applications द्वारा Access किया जाना हो , को इन Applications हेतु Access करवाने के लिए जिस तरीके का प्रयोग किया जाता है , उसे Content Provider कहते है |

    यानी Android Development Model हमें Content Providers के माध्यम से Data को इस प्रकार से Develop करने कि सुविधा Provide करता है , ताकि उन्हें Device के अन्य Applications भी उपयोग ले सकें | साथ ही हमारे data पर इन Content Providers का पूरा control भी होता है , जो इस बात को निश्चित करते है कि विभन्न Applications हमारे Data को किस तरह से Access Manipulate कर सकेंगे |

    इसी प्रकार से यदि हम हमारे Android app के Data को Store करने के लए SQLite Database use करना चाहते है , तो SQLite Database को Access Manipulate करने के लिए Android Architecture के Content Providers को use कर सकते है , जो कि हमें एक Developer के रूप में किसी भी प्रकार के Content को Access / Manipulate करने हेतु आसान Encapsulated Access Provide करता है |

    इस प्रकार के Content Providers वास्तव में हमें हमारे Android Device में stored Data को Android Applications के माध्यम से share करने कि सुविधा Provide करता है , जो कि Android Architecture द्वारा Define किया गया एक Standard Mechanism है , जिसमें Data sharing हेतु Underlying Storage, Structure  व उनके Implementation को Expose करना जरुरी नहीं होता |

     

    AndroidManifest.xml

    प्रत्येक Android App में AndroidManifest.xml नाम की एक Configuration File भी होती है , जिसमें Android App से सम्बंधित सभी Activities को defines Specify किया गया होता है साथ ही Main Activity अथवा Android App की Launcher Activity को भी इसी AndroidManifest.xml File में Mark किया जाता है | यानी इसी File में इस बात को तय किया जाता है की हमारे Android app की विभन्न Activites में कौन सी Activity Screen पर सबसे पहले Display होगी |

    सामान्यतः हर नया Android  Developer एक मुख्या गलती ये करता है की वह जब भी अपने Android App में कोई नई Activity Add करता है , उसे AndroidManifest.xml File में Specify करना भूल जाता है  और जब तक किसी Activity को इस file में Specify नहीं किया जाता , तब तक हमारा Android App उसे नहीं पहचानता इसलिए जब भी कभी नया  Activity Create करें सबसे पहले उसे इस Manifest File में Specify करें |

     

        


     

    No comments

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728