كل ما تحتاج لمعرفته حول مكونات هندسة Android
نشرت: 2022-01-02مكونات العمارة
الهندسة المعمارية هي خطة ثابتة يجب وضعها قبل بدء عملية التطوير. تحافظ مكونات البنية على تنظيم التطبيق ، وتربط كل المكونات معًا وتوفر مجموعة من المكتبات التي تساعدك على تصميم تطبيقات قوية ويمكن التحقق منها وصيانتها. تقترح بنية Android الجديدة بعض المبادئ الأساسية لإنشاء تطبيق مثالي بأمان وتجنب الفئات المتضخمة التي يصعب صيانتها واختبارها.
اللبنات
الأمثلة الأساسية للكتل الإنشائية هي النشاط ، العرض ، النوايا ، الخدمات ، الأجزاء ، ملف البيان ، AVD (جهاز Android الافتراضي). هذه الكتل هي تمثيل لبنية مكونات التطبيق العقلاني وهي أيضًا علامات لنقاط ضعف المطور.
المجموعة الأولى تساعدك في
- قم بإدارة نشاطك ودورات حياة الأجزاء تلقائيًا لتجنب تسرب الذاكرة والموارد
- حافظ على كائنات بيانات Java في قاعدة بيانات SQLite
عناصر:
1. مكونات دورة الحياة
يستخدم هذا المكون لإضافة الوعي بدورة الحياة. تشتمل مكونات دورة الحياة على Lifecycle و LifecycleOwner و LifecycleObserver
دورة الحياة
تعتبر دورة الحياة حتى الآن فئة مجردة يديرها النظام نفسه. ولكن في السيناريو الحالي ، تحدد دورة الحياة حالة المكون وتتصرف وتنتهي المهمة وفقًا لذلك في الوقت المناسب.
دورة الحياة
LifecycleOwner هي واجهة يمكن تنفيذها للحصول على كائن دورة حياة من طريقة getLifecycle (). يعتبر ProcessLifecycleOwner مفيدًا عندما تريد إدارة دورة حياة عملية كاملة.
دورة الحياة
LifecycleObserver يلاحظ مكونات LifecycleOwner مثل الأنشطة والأجزاء. يتلقى LifecycleOwner.Event والرد عليها من خلال طرق التعليقات التوضيحية.
من خلال تنفيذ كل ذلك معًا ، يمكننا إنشاء تطبيق Lifecycle الإدراك.
تنفيذ مراقب دورة الحياة
فئة عامة TestObserver تنفذ LifecycleObserver {
MyObserver العام (دورة حياة دورة الحياة) {
// يبدأ مراقبة دورة الحياة
lifecycle.addObserver (هذا) ؛
...
}
// يتم استدعاء الطرق المشروحة عندما تمر دورة الحياة المرتبطة بهذه الأحداث
OnLifecycleEvent (دورة الحياة. ON_RESUME)
الفراغ العام onResume () {
}
OnLifecycleEvent (Lifecycle.Event.ON_PAUSE)
الفراغ العام onPause () {
}
}
الآن يمكننا استخدام هذا المراقب في مكون التطبيق لدينا ، باستخدام التطبيق التالي TestObserver Observer = new TestObserver (aLifecycleOwner.getLifecycle ()) ؛
2. LiveData
مكون LiveData هو حامل بيانات يحتوي على قيمة يمكن ملاحظتها. من خلال "لِيفاتا" كلما تم تحديث "النشاط" أو "الجزء" ، سوف نتلقى إخطارًا حتى يتم تحديث واجهة المستخدم الخاصة بك دائمًا. وهو عبارة عن غلاف حول نماذجك النموذجية ينبه المراقبين عندما يتغير شيء ما في هذا النموذج. الميزة الرئيسية لبيانات المعيشة هي عدم وجود المزيد من تسريبات الذاكرة و NullPointerExceptions بسبب طرق العرض غير الموجودة.
إنشاء كائنات LiveData
يمتد MyViewModel للفئة العامة إلى ViewModel {
// إنشاء LiveData بسلسلة
بيانات MutableLiveData الخاصة <سلسلة> mData ؛
بيانات MutableLiveData العامة <String> getData () {
إذا (mData == فارغة) {
mData = new MutableLiveData <String> () ؛
}
إرجاع mData ؛
}
}
مراقبة كائنات LiveData
يوضح الكود التالي كيفية مراقبة كائن LiveData:
تعمل MyActivity للفئة العامة على توسيع AppCompatActivity {
public void onCreate (Bundle saveInstanceState) {
super.onCreate (saveInstanceState) ؛
MyViewModel model = ViewModelProviders.of (this) .get (MyViewModel .class) ؛
model.getData (). observe (this، data -> {
// تحديث واجهة المستخدم
}) ؛
}
}3. عرض النموذج
ViewModel مفيد في توفير البيانات والاحتفاظ بها لمكونات واجهة المستخدم (النشاط أو الجزء) بطريقة واعية لدورة الحياة. إنه قادر على البقاء على قيد الحياة من خلال تغييرات التكوين. لذلك إذا قمت بإتلاف النشاط أو تغيير اتجاه هاتفك ، فلن تفقد ViewModel والبيانات. نظرًا لمثيل LiveData الذي تم وضعه ضمن فئة ViewModel ، فإن الإدخال من نهايتنا غير مطلوب.
لا داعي للقلق بشأن دورة حياة واجهة المستخدم لبيانات المالك في واجهة المستخدم. سيتم إنشاء ViewModel تلقائيًا من خلال مصنع ولن تحتاج إلى التعامل مع إنشائه وهدمه بنفسك.
تنفيذ ViewModel
يتضح من خلال نموذج التعليمات البرمجية التالي:
يمتد MyViewModel للفئة العامة إلى ViewModel {
MutableLiveData الخاص <قائمة <الطلاب>> الطلاب ؛
LiveData العامة <قائمة <Students>> getStudents () {
إذا (الطلاب == فارغة) {
الطلاب = new MutableLiveData <List <Students>> () ؛
loadStudents () ؛
}
عودة الطلاب
}
تحميل باطل خاص
// قم بإجراء عملية غير متزامنة لجلب الطلاب.
}
}يمكنك الوصول إلى هذه القائمة من أي نشاط على النحو التالي:

تعمل MyActivity للفئة العامة على توسيع AppCompatActivity {
public void onCreate (Bundle saveInstanceState) {
// قم بإنشاء ViewModel في المرة الأولى التي يستدعي فيها النظام طريقة onCreate () الخاصة بالنشاط.
// تتلقى الأنشطة المعاد إنشاؤها نفس مثيل MyViewModel الذي تم إنشاؤه بواسطة النشاط الأول.
MyViewModel model = ViewModelProviders.of (this) .get (MyViewModel.class) ؛
model.getStudents () .observe (هذا الطلاب -> {
// تحديث واجهة المستخدم
}) ؛
}
}4. الغرفة
الغرفة هي مكتبة قاعدة بيانات وبديل رائع لقاعدة بيانات SQLite. لاستخدام قاعدة بيانات SQLite ، من الضروري دائمًا كتابة الكثير من النصوص المعيارية. يمكننا تحديد قاعدة البيانات عن طريق إضافة التعليقات التوضيحية في فئة النموذج. تساعد المكتبة في إنشاء ذاكرة تخزين مؤقت لبيانات التطبيق على الجهاز. إنه يشبه إلى حد كبير OrmLite.
هناك 3 مكونات رئيسية في الغرفة:
أ. قاعدة البيانات
نظرًا لاستمرار تطبيقك ، فإن البيانات العلائقية وتحتوي على حامل قاعدة البيانات ، فهي تعمل كنقطة وصول رئيسية للاتصال الأساسي بالفئة التي تم التعليق عليها باستخدامDatabase يجب أن تستوفي الشروط التالية:
كن فئة مجردة تعمل على توسيع قاعدة بيانات الغرفة.
قم بتضمين قائمة الكيانات المرتبطة بقاعدة البيانات التي تتضمن التعليق التوضيحي.
تقوم بإرجاع الفئة التي تم التعليق عليها بعلامةDao وتحتوي على طريقة مجردة تحتوي على 0 وسيطات.
أثناء وقت التشغيل ، يمكنك الحصول على نسخة من قاعدة البيانات من خلال استدعاء Room.inMemoryDatabaseBuilder () أو Room.databaseBuilder ().
ب. شخصية
يمثل جدولاً داخل قاعدة البيانات.
ج. DAO
يحتوي على الطرق المستخدمة للوصول إلى قاعدة البيانات.
إنشاء الكيان
@شخصية
مستخدم فئة عامة {
@المفتاح الأساسي
uid الخاص ؛
ColumnInfo (الاسم = "first_name")
سلسلة خاصة الاسم الأول ؛
ColumnInfo (الاسم = "last_name")
سلسلة خاصة اسم العائلة ؛
// يتم تجاهل الحاصلون والمحددون للإيجاز ،
// لكنهم مطلوبون للغرفة للعمل.
}إنشاء قاعدة بيانات
Database (الكيانات = {User.class} ، الإصدار = 1)
فئة الملخص العامة AppDatabase توسع RoomDatabase {
AppDatabase INSTANCE ثابت خاص ؛
قاعدة بيانات getDatabase AppDatabase عامة ثابتة (سياق سياق) {
إذا (INSTANCE == null) {
INSTANCE = Room.databaseBuilder (Context.getApplicationContext ()، AppDatabase.class، "my_db"). build ()؛
}
عودة INSTANCE؛
}
}تُستخدم هذه الفئة لإنشاء قاعدة البيانات والحصول على مثيل لها. نقوم بإنشاء قاعدة البيانات باستخدام الكود التالي.
Room.databaseBuilder (Context.getApplicationContext ()، AppDatabase.class، “my_db”). build ()؛
تكوين كائن الوصول إلى البيانات
علق على الفصل مع التعليق التوضيحي @ داو. سيتم بعد ذلك إنشاء تطبيق فئة بواسطة الغرفة التي تنفذ الأساليب المحددة في الواجهة (تشبه إلى حد كبير طريقة عمل التعديل التحديثي).
تضمين التغريدة
الواجهة العامة UserDao {
Query ("تحديد * من المستخدم")
قائمة <User> getAll () ،
Query ("SELECT * FROM user WHERE uid IN (: userIds)")
قائمة <User> loadAllByIds (int [] userIds) ؛
Query ("SELECT * FROM user WHERE first_name LIKE: first AND"
+ "last_name LIKE: last LIMIT 1")
findByName المستخدم (السلسلة أولاً ، السلسلة الأخيرة) ؛
@إدراج
إدراج باطل الكل (مستخدم ... مستخدمين) ؛
@حذف
حذف باطل (مستخدم المستخدم) ؛
}استنتاج
تمنحك هذه المقالة معرفة أساسية بمكونات هندسة Android. لقد حاولنا تضمين جميع الموضوعات المتعلقة بهندسة android المقترحة حديثًا والتي تحل جميع المشكلات ذات الصلة التي يواجهها المطور أثناء تطوير التطبيق. ومع ذلك ، إذا وجدت أي مشكلات ، ففكر في Hire Android Developer of Elsner Technology .
