जावा में अपना पहला एंड्रॉइड ऐप बनाना
- इतिहास
- एंड्रॉइड ओएस घटक:
- एंड्रॉइड ऑपरेटिंग सिस्टम ओपन सोर्स है।
- एंड्रॉइड डेवलपमेंट में जावा की भूमिका। जावा एंड्रॉइड डेवलपमेंट के लिए पसंदीदा भाषाओं में से एक है और इसका कारण यह है:
- एंड्रॉइड ऐप डेवलपमेंट के लिए पूर्वापेक्षाएँ
- एंड्रॉइड के लिए जावा का परिचय
- पिज्जा सर्च ऐप बनाना
- परीक्षण और डिबगिंग
- अपना ऐप तैनात करना
- अंतिम ऐप डेमो
- एंड्रॉइड कचरा संग्रहण (Garbage Collection) एंड्रॉइड कचरा संग्रहण अगस्टो हर्बेल द्वारा अच्छा लेख
2023 की चौथी तिमाही में दुनिया भर में स्मार्टफोन की बिक्री।
[FR]
Le système d'exploitation Android possède la plus grande base installée parmi les plateformes mobiles à travers le monde. BACKLINKO
- Début 2024, Android détient une part de marché mondiale de 70,69 %.
- Aux États-Unis, les iPhones ont une part de marché de 60,77 %.
- Plus de 3 milliards d'appareils Android sont actuellement actifs.
- Les smartphones Android ont représenté 56 % des ventes mondiales de smartphones au quatrième trimestre 2023.
इतिहास
- एंड्रॉइड को ओपन हैंडसेट एलायंस द्वारा बनाया गया था, जिसका नेतृत्व गूगल करता है।
- 18 अगस्त, 2008 को, एंड्रॉइड 0.9 SDK बीटा जारी किया गया था।
- 5 दिसंबर, 2008 को, गूगल ने पहले एंड्रॉइड देव फोन की घोषणा की।
[FR]
Historique
- Android a été créé par la Open Handset Alliance, dirigée par Google.
- Le 18 août 2008, la version bêta du SDK Android 0.9 a été lancée.
- Le 5 décembre 2008, Google a annoncé le premier téléphone pour développeurs Android (Android Dev Phone).
एंड्रॉइड ओएस घटक:
लिनक्स कर्नेल: एंड्रॉइड ऑपरेटिंग सिस्टम का मूल लिनक्स कर्नेल पर आधारित है, जिसे C और C++ में लिखा गया है। नेटिव लाइब्रेरीज़: एंड्रॉइड सिस्टम के कई मुख्य घटक और सेवाएं C और C++ में लिखे गए नेटिव कोड का उपयोग करके बनाई गई हैं। ये नेटिव लाइब्रेरीज़ आवश्यक कार्यक्षमता प्रदान करती हैं और जावा API के माध्यम से डेवलपर्स के लिए उपलब्ध कराई जाती हैं। एंड्रॉइड रनटाइम (ART): एंड्रॉइड रनटाइम (ART) और इसका पूर्ववर्ती, डलविक (Dalvik), एंड्रॉइड एप्लिकेशन चलाने के लिए जिम्मेदार हैं। ये रनटाइम जावा सोर्स कोड या कोटलिन (Kotlin) से संकलित बाइटकोड को निष्पादित करते हैं। जावा API फ्रेमवर्क: उच्च-स्तरीय API और एप्लिकेशन फ्रेमवर्क जावा में लिखे गए हैं। यह डेवलपर्स को जावा का उपयोग करके एंड्रॉइड एप्लिकेशन लिखने की अनुमति देता है, जिन्हें बाद में बाइटकोड में संकलित किया जाता है और एंड्रॉइड रनटाइम पर चलाया जाता है।
[FR] \\
Linix Kernel : Le cœur du système d'exploitation Android est basé sur le noyau Linux, écrit en C et C++. Bibliothèques natives : De nombreux composants et services essentiels d'Android sont construits avec du code natif en C et C++, accessibles via des API Java. Android Runtime (ART) : ART, et son prédécesseur Dalvik, exécutent les applications Android en bytecode, compilé à partir de code Java ou Kotlin. Framework d'API Java : Les API et frameworks de plus haut niveau sont écrits en Java, permettant aux développeurs d'écrire des applications exécutées sur l'Android Runtime.
एंड्रॉइड ऑपरेटिंग सिस्टम ओपन सोर्स है।
- संभावित संशोधन और पुनर्वितरण के लिए स्वतंत्र रूप से उपलब्ध।
- CyanogenMod लोकप्रिय ओपन सोर्स एंड्रॉइड पुनर्वितरणों में से एक है।
- सीमाएं: क्लोज्ड-सोर्स गूगल एप्लिकेशन जैसे गूगल प्ले और गूगल जीपीएस नेविगेशन।
[FR]
Le système d'exploitation Android est open source.
- Disponible librement pour modifications et redistribution.
- CyanogenMod est l'une des redistributions open source populaires d'Android.
- Limites : Applications propriétaires de Google comme Google Play et la navigation GPS de Google restent fermées.
एंड्रॉइड डेवलपमेंट में जावा की भूमिका। जावा एंड्रॉइड डेवलपमेंट के लिए पसंदीदा भाषाओं में से एक है और इसका कारण यह है:
- जावा एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) भाषा है: जावा के OOP सिद्धांत जटिल कोडबेस को प्रबंधित और बनाए रखना आसान बनाते हैं। यह मॉड्यूलर दृष्टिकोण डेवलपर्स को पुन: प्रयोज्य (reusable) और स्केलेबल कोड बनाने की अनुमति देता है।
- प्लेटफ़ॉर्म स्वतंत्रता: जावा की "एक बार लिखें, कहीं भी चलाएं" क्षमता यह सुनिश्चित करती है कि जावा में लिखा गया कोड किसी भी ऐसे डिवाइस पर चल सकता है जो जावा वर्चुअल मशीन (JVM) का समर्थन करता है। यह क्रॉस-प्लेटफ़ॉर्म संगतता एंड्रॉइड डेवलपमेंट के लिए एक महत्वपूर्ण लाभ है।
- मजबूत और सुरक्षित: जावा अपनी मजबूती और सुरक्षा सुविधाओं के लिए जाना जाता है। इसमें मजबूत मेमोरी प्रबंधन, अपवाद हैंडलिंग (exception handling) और एक व्यापक सुरक्षा फ्रेमवर्क शामिल है, जो इसे सुरक्षित एंड्रॉइड एप्लिकेशन विकसित करने के लिए आदर्श बनाता है।
- व्यापक लाइब्रेरीज़ और उपकरण: जावा लाइब्रेरीज़ और डेवलपमेंट टूल्स का एक समृद्ध सेट प्रदान करता है जो डेवलपमेंट प्रक्रिया को सरल बनाता है। ये लाइब्रेरीज़ पहले से निर्मित कार्यक्षमताएं प्रदान करती हैं, जिससे स्क्रैच से कोड लिखने की आवश्यकता कम हो जाती है।
- प्रदर्शन: जावा का प्रदर्शन एंड्रॉइड डेवलपमेंट के लिए अनुकूलित है। जस्ट-इन-टाइम (JIT) कंपाइलर और कुशल कचरा संग्रहण (garbage collection) एंड्रॉइड एप्लिकेशन के सुचारू प्रदर्शन में योगदान करते हैं।
- मौजूदा डेवलपर आधार: जावा पहले से ही एक व्यापक रूप से उपयोग की जाने वाली और प्रसिद्ध प्रोग्रामिंग भाषा थी जिसका डेवलपर्स का एक बड़ा समुदाय था। इसका मतलब था कि जावा से परिचित प्रतिभाओं का एक तैयार पूल था, जिससे गूगल के लिए डेवलपर्स को एंड्रॉइड प्लेटफ़ॉर्म की ओर आकर्षित करना आसान हो गया।
- सन माइक्रोसिस्टम्स का समर्थन: उस समय, जावा के मूल निर्माता, सन माइक्रोसिस्टम्स ने सक्रिय रूप से जावा को अपनाने के लिए प्रोत्साहित किया और एंड्रॉइड के लिए जावा का उपयोग करने के लिए गूगल के साथ एक समझौता किया। यह समर्थन गूगल के निर्णय में एक महत्वपूर्ण कारक था।
[FR]
- JAVA est un langage de programmation orienté objet (OOP) : Les principes OOP de Java facilitent la gestion et la maintenance des bases de code complexes, permettant un code modulaire, réutilisable et évolutif.
- Indépendance de la plateforme : La capacité "Write Once, Run Anywhere" de Java garantit que le code peut s'exécuter sur tout appareil prenant en charge la JVM, offrant une compatibilité multiplateforme avantageuse pour le développement Android.
- Robuste et sécurisé : Java est réputé pour sa gestion mémoire, sa gestion des exceptions et son cadre de sécurité complet, idéal pour des applications Android sécurisées.
- Bibliothèques et outils étendus : Java propose un ensemble riche de bibliothèques et d'outils facilitant le développement.
- Performance : Java est optimisé pour Android grâce au compilateur JIT et à une gestion efficace de la mémoire, assurant une performance fluide des applications.
- Base de développeurs existante : Java était déjà un langage populaire, avec une grande communauté, facilitant ainsi l'adoption par les développeurs pour la plateforme Android.
- Soutien de Sun Microsystems : À l'époque, Sun Microsystems, créateur de Java, encourageait activement son adoption et avait un accord avec Google pour son utilisation dans Android.
एंड्रॉइड ऐप डेवलपमेंट के लिए पूर्वापेक्षाएँ
बुनियादी प्रोग्रामिंग ज्ञान:
- जावा या कोटलिन जैसी प्रोग्रामिंग अवधारणाओं और भाषाओं से परिचित होना।
- ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) सिद्धांतों की समझ।
- एंड्रॉइड में यूजर इंटरफेस डिजाइन करने के लिए XML (eXtensible Markup Language) की बुनियादी समझ।
[FR] \\
- Familiarité avec des concepts de programmation et des langages tels que Java ou Kotlin.
- Compréhension des principes de la programmation orientée objet (OOP).
- Compréhension basique du XML (eXtensible Markup Language) pour la conception d'interfaces utilisateur dans Android.
graph TD
A[User] -->|User interacting with View| B[View]
B -->|Request Process| C[Controller]
C -->|Asking Model to provide Data| D[Model]
D -->|Asking Data from DB| E[(Database)]
E -->|Response from DB| D
D -->|Returning the Data| C
C -->|Rendering the content| B
B -.-> A
%% Color and style enhancements
style A fill:#f9c1c1,stroke:#333,stroke-width:2px
style B fill:#ffff99,stroke:#333,stroke-width:2px
style C fill:#d9f9a1,stroke:#333,stroke-width:2px
style D fill:#a1c1f9,stroke:#333,stroke-width:2px
style E fill:#ff9999,stroke:#333,stroke-width:2px
%% Separating User and Database
subgraph User Interaction
A
B
end
subgraph Backend
C
D
E
end- बुनियादी MVC ज्ञान (मॉडल व्यू कंट्रोलर)
डेवलपमेंट वातावरण:
एंड्रॉइड स्टूडियो स्थापित करने के लिए यह एक अच्छा यूट्यूब वीडियो ट्यूटोरियल है: एंड्रॉइड स्टूडियो + SDK कॉन्फ़िगरेशन
- एंड्रॉइड स्टूडियो: एंड्रॉइड स्टूडियो का नवीनतम संस्करण डाउनलोड और इंस्टॉल करें, जो एंड्रॉइड डेवलपमेंट के लिए आधिकारिक एकीकृत डेवलपमेंट वातावरण (IDE) है।
-
एंड्रॉइड SDK: जब संकेत दिया जाए, तो एंड्रॉइड सॉफ्टवेयर डेवलपमेंट किट (SDK) इंस्टॉल करें। एंड्रॉइड SDK लाइब्रेरीज़ और सॉफ्टवेयर डेवलपमेंट टूल्स का एक संग्रह है जो एंड्रॉइड एप्लिकेशन विकसित करने के लिए आवश्यक हैं। जब भी गूगल एंड्रॉइड सॉफ्टवेयर का कोई नया संस्करण या अपडेट जारी करता है, तो उसके साथ एक संबंधित SDK भी जारी होता है। आप इन चरणों का पालन करके नए संस्करण भी इंस्टॉल कर सकते हैं:
- एंड्रॉइड स्टूडियो खोलें -> टूल्स पर क्लिक करें -> SDK मैनेजर पर क्लिक करें और अपनी पसंद का कोई भी संस्करण इंस्टॉल करें।
-
इम्यूलेटर सेट करना:
- टूल्स पर क्लिक करें -> डिवाइस मैनेजर -> नया डिवाइस जोड़ें -> वर्चुअल डिवाइस बनाएं
- संकेतों का पालन करें।
-
भौतिक डिवाइस का उपयोग करना: वैकल्पिक रूप से, आप डेवलपर विकल्प और USB डिबगिंग को सक्षम करके परीक्षण के लिए एक भौतिक एंड्रॉइड डिवाइस का उपयोग कर सकते हैं।
- सेटिंग्स पर क्लिक करें -> अबाउट …
- बिल्ड नंबर पर लगातार सात बार तेजी से टैप करें (जब आप मोड सक्षम करने के करीब होंगे तो एक पॉपअप संदेश दिखाई देगा)
- डेवलपर विकल्पों पर जाएं और USB डिबगिंग सक्षम करें।
[FR] \\
C'est un excellent tutoriel vidéo YouTube pour installer Android Studio : Android Studio + Configurations SDK
- Android Studio : Téléchargez et installez la dernière version d'Android Studio, l'IDE officiel pour le développement Android.
-
Android SDK : Lorsque vous y êtes invité, installez le kit de développement logiciel Android (SDK). Vous pouvez installer des versions plus récentes en suivant ces étapes :
- Ouvrez Android Studio -> Cliquez sur Outils -> SDK Manager et installez la version souhaitée.
-
Configurer un émulateur :
- Cliquez sur Outils -> Gestionnaire de périphériques -> Ajouter un nouvel appareil -> créer un appareil virtuel.
- Utiliser un appareil physique : Activez les options de développeur et le débogage USB.
शुरुआत करना
एंड्रॉइड प्रोजेक्ट संरचना को समझना
- ऐप मॉड्यूल: मुख्य मॉड्यूल जिसमें आपके ऐप का सोर्स कोड, संसाधन और ऐप-स्तरीय सेटिंग्स जैसे AndroidManifest.xml और build.gradle फाइलें होती हैं। जब आप एक नया प्रोजेक्ट बनाते हैं, तो डिफ़ॉल्ट ऐप मॉड्यूल का नाम "app" होता है।
- लाइब्रेरी मॉड्यूल: (प्रोजेक्ट व्यू मोड): बाहरी लाइब्रेरीज़ में पुन: प्रयोज्य कोड होता है जिसे अन्य ऐप मॉड्यूल या प्रोजेक्ट्स में निर्भरता (dependency) के रूप में उपयोग किया जा सकता है। यह एक एंड्रॉइड आर्काइव (AAR) फाइल उत्पन्न करता है।
-
प्रोजेक्ट फाइलें:
- build.gradle: रूट बिल्ड फाइल जिसमें प्लगइन घोषणाएं और सभी सब-प्रोजेक्ट्स के लिए सामान्य कॉन्फ़िगरेशन होते हैं।
- settings.gradle: वैश्विक बिल्ड जानकारी शामिल है, जिसमें प्रोजेक्ट के नाम और शामिल किए जाने वाले सब-प्रोजेक्ट्स शामिल हैं।
- local.properties: स्थानीय मशीन से संबंधित गुण शामिल हैं, जैसे एंड्रॉइड SDK स्थान (सोर्स कंट्रोल से बाहर रखा गया है), आप यहां अपनी API कुंजियाँ भी जोड़ सकते हैं।
-
निर्देशिका संरचना:
- src/main/AndroidManifest.xml: आपके ऐप के बारे में आवश्यक जानकारी घोषित करता है, जिसमें घटक और अनुमतियाँ शामिल हैं।
- src/main/java: आपके ऐप के लिए जावा या कोटलिन सोर्स कोड शामिल है।
- src/main/res: लेआउट, ड्रॉएबल्स और स्ट्रिंग्स जैसी संसाधन फाइलें शामिल हैं।
[FR] \\
Comprendre la structure du projet Android
- Module App : Le module principal contenant le code source, les ressources et les paramètres de l'application (AndroidManifest.xml, build.gradle).
- Module Bibliothèque : (Mode Vue Projet) Contient du code réutilisable sous forme de fichier AAR.
-
Fichiers du Projet :
- build.gradle, settings.gradle, local.properties.
-
Structure des Dossiers :
- src/main/AndroidManifest.xml
- src/main/java
- src/main/res
अधिक विस्तृत जानकारी के लिए, कृपया मूल दस्तावेज़ देखें।
एंड्रॉइड घटकों को समझना
- एक्टिविटीज़ (Activities): एक्टिविटीज़ एक यूजर इंटरफेस के साथ एक एकल स्क्रीन का प्रतिनिधित्व करती हैं। वे उपयोगकर्ता के साथ बातचीत करने के लिए प्रवेश बिंदु हैं। फ्रैगमेंट का अपना जीवनचक्र (lifecycle) होता है, जो होस्ट एक्टिविटी के जीवनचक्र से निकटता से जुड़ा होता है। यह UI घटकों और उनकी स्थिति प्रबंधन पर बेहतर नियंत्रण की अनुमति देता है।
[FR] \\
Comprendre les composants Android
- Activités : Les activités représentent une seule interface utilisateur et sont le point d'entrée pour interagir avec l'utilisateur. Les fragments ont leur propre cycle de vie, étroitement lié à celui de l'activité hôte, ce qui permet un meilleur contrôle des composants UI et de leur gestion d'état.
अधिक विवरण के लिए, आप मूल दस्तावेज़ या एंड्रॉइड आर्किटेक्चर पर एक गाइड देख सकते हैं।
public class MainActivity extends AppCompatActivity {
// Code for the activity
}
Fragments: Fragments introduce modularity into your app’s UI by letting you divide the UI into discrete chunks. This makes it easier to manage and reuse components across different parts of your app.- फ्रैगमेंट (Fragments): फ्रैगमेंट आपके ऐप के UI में मॉड्यूलरिटी लाते हैं, जिससे आप UI को अलग-अलग हिस्सों में विभाजित कर सकते हैं। इससे आपके ऐप के विभिन्न हिस्सों में घटकों को प्रबंधित करना और उनका पुन: उपयोग करना आसान हो जाता है।
[FR] \\
- Fragments: : Les fragments introduisent la modularité dans l'interface utilisateur de votre application en vous permettant de diviser l'interface en blocs distincts. Cela facilite la gestion et la réutilisation des composants dans différentes parties de l'application.
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, new ExampleFragment());
transaction.addToBackStack(null);
transaction.commit();- सर्विसेज (Services): सर्विसेज लंबे समय तक चलने वाले ऑपरेशन करने या रिमोट प्रक्रियाओं के लिए काम करने के लिए बैकग्राउंड में चलती हैं। उदाहरण: एक म्यूजिक प्लेयर ऐप बैकग्राउंड में संगीत चलाने के लिए एक सर्विस का उपयोग कर सकता है जबकि उपयोगकर्ता किसी अन्य ऐप में है।
[FR] \\
- Services : Les services s'exécutent en arrière-plan pour effectuer des opérations de longue durée ou des tâches pour des processus distants. Exemple : Une application de lecteur de musique peut utiliser un service pour jouer de la musique en arrière-plan pendant que l'utilisateur utilise une autre application.
public class MusicService extends Service {
// Code for the service
}- कंटेंट प्रोवाइडर्स (Content Providers): कंटेंट प्रोवाइडर्स डेटा के एक संरचित सेट तक पहुंच का प्रबंधन करते हैं। वे डेटा को एनकैप्सुलेट करते हैं और डेटा सुरक्षा को परिभाषित करने के लिए तंत्र प्रदान करते हैं। संक्षेप में, एक कंटेंट प्रोवाइडर एंड्रॉइड का तरीका है जिससे ऐप्स अपना डेटा अन्य ऐप्स के साथ साझा कर सकते हैं। उदाहरण: एक ऐप जो उपयोगकर्ता के संपर्क संग्रहीत करता है, संपर्क डेटा को प्रबंधित करने के लिए एक कंटेंट प्रोवाइडर का उपयोग कर सकता है।
[FR] \\
- Content Providers : Les content providers gèrent l'accès à un ensemble structuré de données. Ils encapsulent les données et fournissent des mécanismes pour définir la sécurité des données. En résumé, un Content Provider permet aux applications Android de partager leurs données avec d'autres applications. Exemple : Une application qui stocke les contacts d'un utilisateur peut utiliser un content provider pour gérer ces données de contact.
public class ContactsProvider extends ContentProvider {
// Code for the provider
}- ब्रॉडकास्ट रिसीवर्स (Broadcast Receivers): ब्रॉडकास्ट रिसीवर्स सिस्टम-व्यापी प्रसारण घोषणाओं का जवाब देते हैं। वे ऐप को सिस्टम या अन्य ऐप्स से विशिष्ट प्रसारण संदेशों को सुनने में सक्षम बनाते हैं। उदाहरण: एक ऐप डिवाइस की बैटरी कम होने पर पता लगाने के लिए ब्रॉडकास्ट रिसीवर का उपयोग कर सकता है।
[FR] \\
- Broadcast Receivers : Les broadcast receivers réagissent aux annonces système globales. Ils permettent à l'application d'écouter des messages spécifiques du système ou d'autres applications. Exemple : Une application peut utiliser un broadcast receiver pour détecter lorsque la batterie de l'appareil est faible.
batteryLevel = new BatteryLevel();
mContext.registerReceiver(batteryLevel, new IntentFilter(Intent.ACTION_BATTERY_LOW));- इंटेंट्स (Intents): इंटेंट्स मैसेजिंग ऑब्जेक्ट्स हैं जिनका उपयोग किसी अन्य ऐप घटक से कार्रवाई का अनुरोध करने के लिए किया जाता है। वे विभिन्न घटकों के बीच संचार की सुविधा प्रदान करते हैं। उदाहरण: एक इंटेंट का उपयोग एक नई एक्टिविटी शुरू करने या प्रसारण भेजने के लिए किया जा सकता है।
[FR] \\
- Intents : Les intents sont des objets de messagerie utilisés pour demander une action à un autre composant de l'application. Ils facilitent la communication entre différents composants. Exemple : Un intent peut être utilisé pour démarrer une nouvelle activité ou envoyer une diffusion (broadcast).
Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);-
लेआउट्स (Layouts): लेआउट्स ऐसे कंटेनर हैं जो व्यूज़ को एक विशिष्ट तरीके से रखते और व्यवस्थित करते हैं। वे UI घटकों की संरचना और स्थिति को परिभाषित करते हैं। सामान्य लेआउट्स:
- LinearLayout: व्यूज़ को एक पंक्ति या कॉलम में व्यवस्थित करता है।
- RelativeLayout: व्यूज़ को एक-दूसरे या पैरेंट कंटेनर के सापेक्ष स्थित करता है।
- ConstraintLayout: एक लचीला लेआउट जो आपको एक फ्लैट व्यू पदानुक्रम के साथ जटिल लेआउट बनाने की अनुमति देता है।
- FrameLayout: एक सरल लेआउट जो व्यूज़ को एक-दूसरे के ऊपर रखता है।
- GridLayout: व्यूज़ को ग्रिड प्रारूप में व्यवस्थित करता है।
- लेआउट एडिटर: अपने UI को नेत्रहीन रूप से डिजाइन करने के लिए एंड्रॉइड स्टूडियो में लेआउट एडिटर का उपयोग करें। पैलेट से UI घटकों को ड्रैग और ड्रॉप करें, और एट्रिब्यूट्स पैनल का उपयोग करके उनके गुणों को कॉन्फ़िगर करें।
-
व्यूज़ (Views): व्यूज़ एंड्रॉइड यूजर इंटरफेस के बुनियादी निर्माण खंड हैं। वे उन UI घटकों का प्रतिनिधित्व करते हैं जिनके साथ उपयोगकर्ता इंटरैक्ट करते हैं, जैसे बटन, टेक्स्ट फील्ड, चित्र, और बहुत कुछ। सामान्य व्यूज़:
- TextView: उपयोगकर्ता को टेक्स्ट प्रदर्शित करता है।
- Button: एक क्लिक करने योग्य बटन।
- ImageView: एक छवि प्रदर्शित करता है।
- EditText: उपयोगकर्ता इनपुट के लिए एक टेक्स्ट फील्ड।
- ListViews
- RecyclerView: स्क्रॉल करने योग्य सूची में बड़े डेटा सेट प्रदर्शित करने के लिए एक लचीला व्यू।
- ListViews और Adapters: ListViews एंड्रॉइड तत्व हैं जिनका उपयोग सूची में आइटम प्रदर्शित करने के लिए किया जाता है। एडेप्टर का उपयोग डेटा की एक सरणी को ListView से बांधने के लिए किया जाता है। यह एक सरल एडेप्टर है जो आइटम की एक एकल सूची को संभाल सकता है।
[FR] \\
-
Layouts : Les layouts sont des conteneurs qui organisent et disposent les vues dans une interface utilisateur.
- LinearLayout : Dispose les vues en une seule ligne ou colonne.
- RelativeLayout : Positionne les vues les unes par rapport aux autres ou au conteneur parent.
- ConstraintLayout : Permet des mises en page complexes.
- FrameLayout : Empile les vues les unes sur les autres.
- GridLayout : Organise les vues en grille.
- Views : Composants de base de l'interface utilisateur, comme
- TextView : Affiche du texte à l'utilisateur.
- Button : Un bouton cliquable.
- ImageView : Affiche une image.
- EditText : Un champ de texte pour la saisie de l'utilisateur.
- ListView : Affiche une liste d'éléments.
- RecyclerView : Vue flexible pour afficher de grandes séries de données dans une liste défilante.
- ListViews et Adapters : ListViews sont utilisés pour afficher des listes, et les Adapters lient les données à cette liste.
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataArray);
listView.setAdapter(adapter);public class CustomAdapter extends BaseAdapter {
// Implementation of custom adapter
}बुनियादी UI डिजाइन
-
XML लेआउट्स: XML के साथ डिजाइन करना।
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, World!" /> android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click Me" /> -
मटेरियल डिजाइन सिद्धांतों का परिचय: मटेरियल डिजाइन गूगल द्वारा विकसित एक डिजाइन प्रणाली है जिसका उपयोग एंड्रॉइड, आईओएस, फ्लटर और वेब सहित विभिन्न प्लेटफार्मों पर उच्च-गुणवत्ता वाले डिजिटल अनुभव बनाने के लिए किया जाता है। यह भौतिक दुनिया और इसकी बनावट से प्रेरित है, जो एक सुसंगत और इमर्सिव उपयोगकर्ता अनुभव बनाने के लिए प्रिंट डिजाइन के सिद्धांतों को शामिल करता है। मटेरियल डिजाइन का उपयोग करना
- अपने प्रोजेक्ट में मटेरियल घटक जोड़ें: अपनी build.gradle फाइल खोलें और निम्नलिखित निर्भरता जोड़ें:
[FR]
Introduction aux principes du Material Design : Material Design est un système de conception développé par Google pour créer des expériences numériques de haute qualité sur Android, iOS, Flutter et le web. Inspiré du monde physique et des textures, il incorpore des principes du design imprimé pour offrir une expérience utilisateur immersive.
- Ajouter des composants Material à votre projet : Ouvrez votre fichier `build.gradle` et ajoutez la dépendance suivante :
implementation 'com.google.android.material:material:1.4.0'अपने ऐप थीम को अपडेट करें:
name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
name="colorPrimary">@color/primary
name="colorPrimaryVariant">@color/primaryVariant
name="colorOnPrimary">@color/onPrimary
name="colorSecondary">@color/secondary
अपने लेआउट में मटेरियल घटकों का उपयोग करें। उदाहरण मटेरियल बटन
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Material Button" />उपयोगकर्ता इनपुट को संभालना: उदाहरण बटन।
XML
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Material Button" />JAVA
MaterialButton button = findViewById(R.id.materialButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Handle button click
}
});डेटा के साथ काम करना
- SharedPreferences का उपयोग करके डेटा प्रबंधित करना: SharedPreferences डेटा की छोटी मात्रा को की-वैल्यू पेयर के रूप में संग्रहीत करने का एक सरल तरीका है। [FR] \\
-
Gérer les données avec SharedPreferences : SharedPreferences est un moyen simple de stocker de petites quantités de données sous forme de paires clé-valeur. Cela permet de sauvegarder des préférences d'utilisateur ou des paramètres de l'application de manière persistante.
SharedPreferences इंस्टेंस प्राप्त करें:
SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);SharedPreferences में डेटा सहेजें:
SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("key", "value"); editor.apply();SharedPreferences से डेटा पुनर्प्राप्त करें:
String value = sharedPreferences.getString("key", "default_value"); - एंड्रॉइड में नेटवर्किंग की मूल बातें (REST API का उपयोग करना)
-
एंड्रॉइड अनुमति परिचय
<uses-permission android:name="android.permission.INTERNET" /> - रेट्रोफिट (Retrofit)
- OkHttp3 OkHttp3 का उपयोग करना: अपनी build.gradle फाइल में OkHttp3 निर्भरता जोड़ें:
implementation 'com.squareup.okhttp3:okhttp:4.9.1'नेटवर्क अनुरोध करें आप OkHttp3 का उपयोग करके सिंक्रोनस और एसिंक्रोनस दोनों नेटवर्क अनुरोध कर सकते हैं। GET अनुरोध करने का तरीका यहां दिया गया है:
सिंक्रोनस GET अनुरोध
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.example.com/data")
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
String responseData = response.body().string();
// Handle the response
}
} catch (IOException e) {
e.printStackTrace();
}एसिंक्रोनस GET अनुरोध
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.example.com/data")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
String responseData = response.body().string();
// Handle the response
}
}
});एंड्रॉइड एक्टिविटी जीवनचक्र को समझना
- onCreate()
कब कॉल किया जाता है: जब एक्टिविटी पहली बार बनाई जाती है। उद्देश्य: एक्टिविटी को इनिशियलाइज़ करना। यह वह जगह है जहां आपको एक बार की सेटअप प्रक्रियाएं करनी चाहिए, जैसे UI बनाना, वेरिएबल इनिशियलाइज़ करना, और सूचियों में डेटा बाइंड करना। उदाहरण:
[FR]
Appelée lorsque : L'activité est créée pour la première fois.
But : Initialiser l'activité. C'est ici que vous devez effectuer les procédures de configuration uniques, telles que la création de l'interface utilisateur, l'initialisation des variables, et le binding des données aux listes.
Exemple :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize components here
}- onStart()
कब कॉल किया जाता है: जब एक्टिविटी उपयोगकर्ता को दिखाई देने लगती है। उद्देश्य: एक्टिविटी को फोरग्राउंड में प्रवेश करने और इंटरैक्टिव बनने के लिए तैयार करना। उदाहरण:
[FR]
Appelée lorsque : L'activité devient visible pour l'utilisateur.
But : Préparer l'activité à entrer au premier plan et à devenir interactive.
Exemple :
@Override
protected void onStart() {
super.onStart();
// Perform tasks to make the activity visible
}- onResume()
कब कॉल किया जाता है: जब एक्टिविटी उपयोगकर्ता के साथ इंटरैक्ट करना शुरू करती है। उद्देश्य: किसी भी रुके हुए UI अपडेट, एनिमेशन या अन्य चल रहे कार्यों को फिर से शुरू करना।
[FR]
Appelée lorsque : L'activité commence à interagir avec l'utilisateur.
But : Reprendre les mises à jour de l'interface utilisateur en pause, les animations ou d'autres actions en cours.
@Override
protected void onResume() {
super.onResume();
// Resume interactions with the user
}- onDestroy()
कब कॉल किया जाता है: जब एक्टिविटी नष्ट होने वाली होती है। उद्देश्य: किसी भी संसाधन, जैसे थ्रेड्स या डेटाबेस कनेक्शन, को साफ करना जिन्हें जारी करने की आवश्यकता है।
[FR]
Appelée lorsque : L'activité est sur le point d'être détruite.
But : Nettoyer toutes les ressources, telles que les threads ou les connexions à la base de données, qui doivent être libérées.
@Override
protected void onDestroy() {
super.onDestroy();
// Clean up resources
}एंड्रॉइड के लिए जावा का परिचय
एंड्रॉइड डेवलपमेंट के लिए प्रासंगिक बुनियादी जावा अवधारणाएं (OOP, क्लासेस, मेथड्स)
-
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) OOP "ऑब्जेक्ट्स" की अवधारणा पर आधारित एक प्रोग्रामिंग प्रतिमान है, जिसमें डेटा और कोड हो सकते हैं। OOP के मुख्य सिद्धांत हैं:
- एनकैप्सुलेशन (Encapsulation): डेटा (फील्ड्स) और मेथड्स (फंक्शंस) को एक एकल इकाई या क्लास में बंडल करना।
- इनहेरिटेंस (Inheritance): मौजूदा क्लासेस के आधार पर नई क्लासेस बनाना, जिससे कोड का पुन: उपयोग और क्लासेस के बीच पदानुक्रमित संबंध बनाना संभव हो सके।
- पॉलीमॉर्फिज्म (Polymorphism): ऑब्जेक्ट्स को उनकी वास्तविक क्लास के बजाय उनकी पैरेंट क्लास के उदाहरण के रूप में माना जाना, जिससे एक इंटरफेस का उपयोग सामान्य प्रकार की क्रियाओं के लिए किया जा सके।
- एब्स्ट्रैक्शन (Abstraction): जटिल कार्यान्वयन विवरणों को छिपाना और केवल एक ऑब्जेक्ट की आवश्यक सुविधाओं को दिखाना।
- क्लासेस और ऑब्जेक्ट्स
क्लास: ऑब्जेक्ट्स बनाने के लिए एक ब्लूप्रिंट। यह डेटा और उन पर काम करने वाले मेथड्स को एक एकल इकाई में बंडल करके एक डेटाटाइप को परिभाषित करता है।
[FR] \\
Concepts de base de Java pertinents pour le développement Android (POO, classes, méthodes)
-
Programmation orientée objet (POO) : Un paradigme basé sur les « objets », qui contiennent des données et du code. Les principaux principes de la POO sont :
- Encapsulation : Regrouper les données et méthodes dans une seule unité (classe).
- Héritage : Créer de nouvelles classes à partir de classes existantes.
- Polymorphisme : Permettre aux objets d'être traités comme des instances de leur classe parente.
- Abstraction : Cacher les détails complexes et montrer uniquement les fonctionnalités essentielles.
- Classes et Objets Classe : Un modèle pour créer des objets, définissant des données et des méthodes.
public class Car {
// Fields
private String color;
private String model;
// Constructor
public Car(String color, String model) {
this.color = color;
this.model = model;
}
// Methods
public void displayInfo() {
System.out.println("Car model: " + model + ", Color: " + color);
}
}ऑब्जेक्ट: एक क्लास का उदाहरण। इसे 'new' कीवर्ड का उपयोग करके बनाया जाता है।
[FR]
Objet : Une instance d'une classe. Il est créé en utilisant le mot-clé `new`.
Car myCar = new Car("Red", "Toyota");
myCar.displayInfo(); // Output: Car model: Toyota, Color: Redमेथड्स: मेथड्स एक क्लास के भीतर परिभाषित फंक्शंस हैं जो क्लास से बनाए गए ऑब्जेक्ट्स के व्यवहार का वर्णन करते हैं।
[FR]
Méthodes : Les méthodes sont des fonctions définies à l'intérieur d'une classe qui décrivent les comportements des objets créés à partir de cette classe.
public class Calculator {
// Method to add two numbers
public int add(int a, int b) {
return a + b;
}
// Method to subtract two numbers
public int subtract(int a, int b) {
return a - b;
}
}- एंड्रॉइड डेवलपमेंट के लिए प्रासंगिकता
- एक्टिविटीज़: (इनहेरिटेंस) एंड्रॉइड में, एक एक्टिविटी एक यूजर इंटरफेस के साथ एक एकल स्क्रीन का प्रतिनिधित्व करती है। प्रत्येक एक्टिविटी को Activity क्लास की सब-क्लास के रूप में लागू किया जाता है।
- XML लेआउट्स: (एब्स्ट्रैक्शन) UI तत्वों और उनके गुणों को परिभाषित करें। ये लेआउट एक्टिविटीज़ से जुड़े होते हैं।
- इंटेंट्स: एक्टिविटीज़ शुरू करने या घटकों के बीच संचार करने के लिए उपयोग किया जाता है।
- AsyncTask: (एब्स्ट्रैक्शन) बैकग्राउंड ऑपरेशन करने और UI थ्रेड को अपडेट करने में मदद करता है।
- एंड्रॉइड में इवेंट हैंडलिंग। एंड्रॉइड में इवेंट हैंडलिंग में ऐप के UI घटकों के साथ उपयोगकर्ता की बातचीत का प्रबंधन करना शामिल है। यहां मुख्य अवधारणाएं और तरीके दिए गए हैं जिन्हें आपको जानना आवश्यक है: इवेंट लिसनर्स और हैंडलर्स: इवेंट लिसनर्स View क्लास में इंटरफेस हैं जिनमें कॉलबैक मेथड्स होते हैं। ये मेथड्स तब कॉल किए जाते हैं जब उपयोगकर्ता उस UI घटक के साथ इंटरैक्ट करता है जिससे लिसनर पंजीकृत है। इवेंट हैंडलर्स वे मेथड्स हैं जो इन इवेंट्स को संभालते हैं। सामान्य इवेंट लिसनर्स और हैंडलर्स: OnClickListener OnLongClickListener
- इंटरफेस क्या है? जावा में एक इंटरफेस एक संदर्भ प्रकार है, जो एक क्लास के समान है, जिसमें केवल स्थिरांक (constants), मेथड सिग्नेचर, डिफ़ॉल्ट मेथड्स, स्टेटिक मेथड्स और नेस्टेड प्रकार हो सकते हैं। इंटरफेस में इंस्टेंस फील्ड्स या कंस्ट्रक्टर नहीं हो सकते। इनका उपयोग उन मेथड्स के सेट को निर्दिष्ट करने के लिए किया जाता है जिन्हें एक क्लास को लागू करना होगा।
[FR]
Pertinence pour le développement Android :
- Activités : (Héritage) Une activité représente un écran et est une sous-classe de la classe `Activity`.
- Layouts XML :(Abstraction)* Définit les éléments UI, reliés aux activités.
- Intents: Utilisés pour lancer des activités ou communiquer entre composants.
- AsyncTask :(Abstraction) Permet d'effectuer des opérations en arrière-plan tout en mettant à jour le thread UI.
Gestion des événements en Android :* Utilise des auditeurs comme `OnClickListener` pour capturer les interactions utilisateur.
Interface : Type de référence définissant un ensemble de méthodes qu'une classe doit implémenter. इंटरफेस बनाना
public interface MyInterface {
void myMethod();
}इंटरफेस लागू करना एक क्लास जो एक इंटरफेस को लागू करती है, उसे इंटरफेस में घोषित सभी मेथड्स के लिए कार्यान्वयन प्रदान करना होगा:
public class MyClass implements MyInterface {
@Override
public void myMethod() {
// Implementation of myMethod
}
}एंड्रॉइड में सामान्य उपयोग के मामले
- इवेंट हैंडलिंग: उदाहरण: OnClickListener
- कॉलबैक: इंटरफेस का उपयोग कॉलबैक मेथड्स बनाने के लिए किया जाता है। उदाहरण के लिए, आप एक फ्रैगमेंट और उसकी पैरेंट एक्टिविटी के बीच संचार को संभालने के लिए एक इंटरफेस परिभाषित कर सकते हैं।
[FR]
Cas d'utilisation courants dans Android :
- Gestion des événements : Exemple : `OnClickListener` pour capturer des clics sur des éléments de l'interface utilisateur.
- Callbacks : Les interfaces sont utilisées pour créer des méthodes de rappel. Par exemple, une interface peut être définie pour gérer la communication entre un fragment et son activité parente.
पिज्जा सर्च ऐप बनाना
- ऐप की मुख्य विशेषताओं का चरण-दर-चरण पूर्वाभ्यास।
- पिज्जा खोजने के लिए API और AI का उपयोग करना।
[FR] \\
- Fonctionnalités principales étape par étape : Un aperçu détaillé des fonctionnalités principales de l'application.
- Utilisation d'une API et de l'IA pour rechercher des pizzas : L'application intègre une API et une intelligence artificielle pour faciliter la recherche de pizzas.
परीक्षण और डिबगिंग
- एंड्रॉइड इम्यूलेटर का उपयोग करना।
- सामान्य समस्याओं को डिबग करना
[FR] \\
- Utilisation de l'émulateur Android : Permet de tester des applications sur un appareil virtuel sans nécessiter de matériel physique.
- Débogage des problèmes courants : Résolution des erreurs et des dysfonctionnements fréquents lors du développement et des tests d'applications Android.
अपना ऐप तैनात करना
- अपने ऐप को भौतिक डिवाइस पर चलाना।
-
प्रकाशन की मूल बातें (गूगल प्ले स्टोर का परिचय)। Youtube
- डेवलपर खाता बनाएं: गूगल प्ले कंसोल पर एक डेवलपर खाते के लिए साइन अप करें।
- रिलीज़ के लिए अपना ऐप तैयार करें: अपने ऐप का रिलीज़ संस्करण बनाएं।
- स्टोर लिस्टिंग: ऐप का शीर्षक, विवरण, स्क्रीनशॉट और प्रचार ग्राफिक्स जैसे विवरण प्रदान करें।
- ऐप रिलीज़: चुनें कि आप अपना ऐप कैसे रिलीज़ करना चाहते हैं (अल्फा, बीटा, या प्रोडक्शन)।
- सामग्री रेटिंग: सामग्री रेटिंग प्रश्नावली पूरी करें।
- मूल्य निर्धारण और वितरण: मूल्य और वितरण विकल्प सेट करें।
- ऐप सामग्री: इन-ऐप खरीदारी या विज्ञापनों जैसी कोई अतिरिक्त सामग्री जोड़ें।
- ऐप रिलीज़: APK फाइल अपलोड करें और अपना ऐप प्रकाशित करें।
[FR]
Exécuter votre application sur un appareil physique.
Principes de base de la publication (introduction au Google Play Store).** Youtube
- Créer un compte développeur : Inscrivez-vous sur Google Play Console.
- Préparer l'application : Construire la version de production.
- Liste de l'application : Fournir titre, description, captures d'écran, etc.
- Publication : Choisissez entre alpha, bêta, ou production.
- Évaluation de contenu : Remplir le questionnaire.
- Tarification et distribution : Fixez le prix et les options de distribution.
- Contenu de l'application : Ajoutez des achats intégrés ou des publicités.
- Publiez : Téléchargez le fichier APK et publiez.
अंतिम ऐप डेमो
- पिज्जा सर्च ऐप को क्रियाशील दिखाना।
-
संभावित सुधारों और अगले चरणों पर चर्चा करना।
- इन-ऐप खरीदारी: (गूगल पे | क्रेडिट कार्ड | ऑरेंज मनी | आदि)
- कार्ट खाली करें
- उपयोगकर्ताओं को अपनी आवाज का उपयोग करके सभी ऐप क्रियाएं पूरी करने की अनुमति दें।
[FR] \\
- Démonstration de l'application de recherche de pizza en action.
-
Discussion sur les améliorations potentielles et les prochaines étapes :
- Achat intégré : (Google Pay | Cartes de crédit | Orange Money | etc.)
- Vider le panier.
- Permettre aux utilisateurs d'effectuer toutes les actions de l'application avec leur voix.
एंड्रॉइड कचरा संग्रहण (Garbage Collection) एंड्रॉइड कचरा संग्रहण अगस्टो हर्बेल द्वारा अच्छा लेख
-
कचरा संग्रहण (GC) का परिचय
- GC स्वचालित मेमोरी प्रबंधन का एक रूप है।
- प्राथमिक लक्ष्य उन ऑब्जेक्ट्स द्वारा कब्जा की गई मेमोरी को पुनः प्राप्त करना है जो अब उपयोग में नहीं हैं।
-
एंड्रॉइड में GC का विकास
- डलविक VM: एंड्रॉइड के शुरुआती संस्करणों ने डलविक VM का उपयोग किया, जिसमें एक सरल GC तंत्र था।
- ART (एंड्रॉइड रनटाइम): एंड्रॉइड 5.0 (लॉलीपॉप) में अधिक कुशल GC एल्गोरिदम के साथ डलविक को बदल दिया।
-
GC एल्गोरिदम
- मार्क-एंड-स्वीप: जीवित ऑब्जेक्ट्स की पहचान करता है और उन्हें चिह्नित करता है, फिर बिना चिह्नित ऑब्जेक्ट्स से मेमोरी पुनः प्राप्त करने के लिए स्वीप करता है।
- जेनरेशनल GC: GC प्रदर्शन को अनुकूलित करने के लिए ऑब्जेक्ट्स को पीढ़ियों (युवा और वृद्ध) में विभाजित करता है।
-
GC ट्रिगर्स
- GC को विभिन्न घटनाओं द्वारा ट्रिगर किया जा सकता है, जैसे मेमोरी आवंटन विफलताएं या पूर्व-निर्धारित मेमोरी सीमा तक पहुंचना।
-
प्रदर्शन पर प्रभाव
- GC एप्लिकेशन निष्पादन में ठहराव का कारण बन सकता है, जिससे प्रदर्शन संबंधी समस्याएं जैसे जंक (अनुत्तरदायी UI) हो सकती हैं।
- ART में अनुकूलन का उद्देश्य इन ठहरावों को कम करना और समग्र प्रदर्शन में सुधार करना है।
-
डेवलपर्स के लिए सर्वोत्तम अभ्यास
- ऑब्जेक्ट निर्माण को कम करें और जब संभव हो ऑब्जेक्ट्स का पुन: उपयोग करें। सर्वोत्तम अभ्यास: कचरा संग्रहकर्ता पर कार्यभार कम करने के लिए अनावश्यक ऑब्जेक्ट्स बनाने से बचें। उदाहरण: लूप में एक नया स्ट्रिंग ऑब्जेक्ट बनाने के बजाय, स्ट्रिंग्स को संयोजित करने के लिए StringBuilder का उपयोग करें।
[FR]
Introduction à la collecte des ordures (GC)
- La GC est une forme de gestion automatique de la mémoire.
- Objectif principal : récupérer la mémoire occupée par des objets inutilisés.
Évolution de la GC dans Android
- Dalvik VM : Versions Android précoces, GC simple.
- ART (Android Runtime) : Remplace Dalvik avec des algorithmes GC plus efficaces.
Algorithmes GC
- Mark-and-Sweep : Marque les objets vivants et libère la mémoire des non-marqués.
- GC générationnel : Divise les objets par génération pour optimiser la performance.
// Inefficient
for (int i = 0; i < 1000; i++) {
String result = "Number: " + i;
}
// Efficient
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 1000; i++) {
builder.append("Number: ").append(i);
}
String result = builder.toString(); // Inefficient
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
// Efficient
Bitmap bitmap = bitmapPool.get(width, height, Bitmap.Config.ARGB_8888);मेमोरी लीक की पहचान करने और उन्हें ठीक करने के लिए मेमोरी प्रोफाइलिंग टूल्स का उपयोग करें। सर्वोत्तम अभ्यास: मेमोरी लीक की पहचान करने और उन्हें ठीक करने के लिए नियमित रूप से मेमोरी प्रोफाइलिंग टूल्स का उपयोग करें। उदाहरण: अपने ऐप के मेमोरी उपयोग की निगरानी करने और मेमोरी लीक का पता लगाने के लिए एंड्रॉइड स्टूडियो के मेमोरी प्रोफाइलर का उपयोग करें। View -> Tool Windows -> Profiler फिर मेमोरी उपयोग का चयन करें। मेमोरी लीक से बचें सर्वोत्तम अभ्यास: सुनिश्चित करें कि ऑब्जेक्ट्स अनजाने में बरकरार न रहें, जिससे मेमोरी लीक हो। उदाहरण: उन ऑब्जेक्ट्स के लिए WeakReference का उपयोग करें जिन्हें कचरा संग्रहण को रोकने की अनुमति नहीं होनी चाहिए।
[FR]
Utiliser les outils de profilage de mémoire pour identifier et corriger les fuites de mémoire :
- Bonne pratique : Utilisez régulièrement des outils de profilage pour détecter et résoudre les fuites de mémoire.
- Exemple : Utilisez le Memory Profiler d'Android Studio pour surveiller l'utilisation de la mémoire de votre application. Chemin : View -> Tool Windows -> Profiler, puis sélectionnez Memory Usage.
Éviter les fuites de mémoire :*
- Bonne pratique : Assurez-vous que les objets ne sont pas retenus involontairement.
- Exemple : Utilisez WeakReference pour les objets qui ne doivent pas empêcher la collecte des ordures.
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4; // Downsample by a factor of 4
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.large_image, options);स्टेटिक संदर्भों का उपयोग करने से बचें सर्वोत्तम अभ्यास: मेमोरी लीक को रोकने के लिए स्टेटिक संदर्भों का उपयोग करने से बचें। उदाहरण: एक्टिविटी के स्टेटिक संदर्भ का उपयोग करने के बजाय, WeakReference का उपयोग करें।
[FR]
Éviter l'utilisation de références statiques : Bonne pratique : Ne pas utiliser de références statiques pour éviter les fuites de mémoire. Exemple : Au lieu d'utiliser une référence statique à une Activity, utilisez une WeakReference afin que l'activité puisse être collectée par le ramasse-miettes une fois qu'elle n'est plus nécessaire.
// Inefficient
private static Activity activity;
// Efficient
private static WeakReference<Activity> activityRef;
