لایه دوم در معماری اندروید ، لایه framework هست که رابط بین اپلیکیشن و سخت افزاره . شامل یه سری کامپوننت هست. که واحدهای اصلی اپلیکیشن های اندروید هستن. یعنی یه برنامه نویس اندروید در 80 درصد مواقع داره با اینا کار میکنه. هر موقع که بخایم با اینا کار کنیم باید توی فایل androidmanifest.xml تعریفشون کنیم.
این کامپوننت ها اینان :
1-activity
2-service
3-broadcast receiver
4-content provider
1- activity
تمام چیزی هست که ما در صفحه نمایش میبینیم. یعنی قسمت های مختلف یه برنامه رو داخل یه اکتیویتی پیاده سازی میکنیم. یعنی یه صفحه از اپلیکیشن رو میگیم اکتیویتی. مثلا باتن ها ، تکس باکس ها و ... داخل یه اکتیویتی قرار میگیرن. در واقع می تونیم بگیم که اکتیوتی معادل form در سی شارپ هست. اکتیویتی از دو قسمت مهم تشکیل شده. یکی layout یا ظاهر برنامه که یه فایل .xml هست و یکی دیگه هم یه فایل .java هست که کدنویسی ها داخل اون انجام میشه. اینکه مثلا وقتی این باتن رو میزنیم چه اتفاقی بیفته.
اکتیویتی ها یه مبحث مهم دارن به اسم lifecycle یا چرخه حیات که خیلی مهمه. و بعدا بهش می پردازم.
یه مبحث مهم دیگه هم متدهای override هست که اونا هم مقاله جدا میخواد.
نحوه تعریف یه کلاس به عنوان یه اکتیویتی ، همون مبحث ارث بری هست که توی جاوا یا سی پلاس میخوندیم با استفاده از کلمه کلیدی extends به این صورت :
گفتم که برای اینکه از یه اکتیویتی استفاده کنیم باید اونو داخل فایل منیفست تعریف کنیم . یعنی اگه برنامه ما 5 تا اکتیویتی داره باید 5 بار هم تعریف بشه با نام خودش و ادرسش هم پکیجش هست . به این صورت :
2- service
سرویس ها یه کامپوننت هستن که برای انجام عملیات در پشت صحنه استفاده میشن. مثلا وقتی که میخوایم برنامه برامون یه دیتایی دانلود کنه (این یه نکته داراه ، بعدا میگم) یا مثلا یه موزیکی پخش کنه در حالیکه کاربر داره با بقیه بخش های برنامه هم کار کنه باید از سرویس استفاده کنیم.
یکی دیگه از کاربردهای سرویس ها انجام عملیاتی هست که طولانی مدته و یه کم سنگین. یعنی اگه اون کار رو به یه اکتیویتی بسپریم ، یعنی لی اوت داشته باشه ، گوشی هنگ میکنه.
در واقع سرویس ها در کنار اکتیویتی ها وظیفه اجرای کاری رو به عهده میگیرن.
گفتم که سرویس ها در پشت صحنه و خارج از دید کاربرد اجرا میشن یعنی layout ندارن
تعریف یه کلاس به عنوان سرویس :
و در فایل منیفست :
3-contentProvider
توی جلسه قبل گفتم که در لینوکس و اندروید هیچ اپلیکیشنی به داده های اپلیکیشن دیگه دسترسی نداره. ولی اینطوری که هیچ ارتباطی نباشه هم که نمیشه... بنابراین راه ارتباطی بین اپلیکیشن های مختلف contentProvider هست
من سایت های فارسی و انگلیسی دیگه ای خوندم که ببینم اطلاعات دیگه ای راجع به contentProvvider دارن یا نه اما دیدم که همشون یه حرف رو هی دارن تکرار میکنن
و
4-broadcast receiver
بعضی وقتا توی برنامه ما لازم داریم که نسبت به یه عمل خاصی ، یه عکس العملی نشون بدیم که خیلی روند خاص و مشخصی نداره. مثلا هر موقع کاربر تاریخ دستگاهشو رو عوض کرد، ما هم یه حرکتی بزنیم . یا مثلا اگه ما توی برنامه یه کاری کردیم به بقیه برنامه ها هم بگیم. اصلا معنی کلمه اش هم پراکندن و دریافت هست.
و
تمامی این کلاس ها یه سری متد دارن که از طریق اونها وظایفشون رو انجام میدن . هرکدوم چندین جلسه توضیح دارن ولی اینجا ما یه معرفی کلی میکنم و بعدا مفصل بهشون میپردازم