Activity #1

در پست نگاه اجمالی به یک برنامه اندروید component های اصلی سازنده یک برنامه اندروید را به صورت مختصر معرفی کردم.در این پست قصد دارم به صورت جزئی تر به Activity در اندروید بپردازم.

Activity یک ازcomponent های اصلی یک برنامه اندروید که فراهم کننده رابط کاربری است که کاربر می تواند به وسیله آن با سیستم ارتباط برقرار کند.در صورتیکه برنامه نویس وب بوده باشید یک Activity را می توانید مانند یک صفحه html در نظر بگیرید.

هر برنامه معمولا شامل چندین Activity است که که بدون وابستگی به یکدیگر با هم ارتباط دارند.همچنین اغلب در یک برنامه یک activity به عنوان activity اصلی شناخته می شود و مشخص کننده اولین صفحه ای است که کاربر پس از ورود به برنامه با آن روبرو می شود.

هر activity می تواند یک activity دیگر را اجرا کند در این حالت  activity جدید فعال می شود و activity قبلی به حالت stop شده توسط سیستم در یک stack به اسم back stack نگه داری می شود.به عبارتی زمانی کهactivity جدید اجرا شود سیستم آنactivity را درون stack اضافه می کند. هر زمان کاربر کارش با activity جدید تمام شد و دکمه back را فشار داد سیستم آن activity را از stack بیرون می کشد و  از بین (destroyed)می برد.در این حالت activity قبلی دوباره شروع به کار می کند.

به ازای هر تغییر وضعیت در activity یک callback صدا زده می شود.برای مثال در زمانی که activity به حالت stopped می رود یک callback اجرا می شود.در هر callback ما می توانیم کارهای مربوط به آن حالت را انجام دهیم برای مثال دروضعیت stopped باید از شر اشیا بزرگ (large objects) خلاص شویم و همچنین  کارهای سنگین مثل کارهای شبکه و دیتابسی را متوقف کنیم.همچنین به طور مثال اگر وضعیت activity به وضعیت resume تغییر کرد باید کارهای لازم در آن وضعیت را انجام دهیم.

ساخت یک Activity

برای ساخت یک activity نیاز دارید تا کلاسی بسازید که از کلاس پایه Activity به ارث برده است.همچنین نیاز است که یک سری از callback هایی را که سیستم در هنگام تغییر وضعیت activity أن ها را صدا می زند را پیاده سازی کنید.دو  callback اصلی عبارت انداز :

onCreate():این متد را سیستم زمانی که activity ما ساخته شد صدا می زدند در این متد باید کارهای اساسی مثل تعیین رابط کاربری یک activity به وسیله setContentView() انجام شود.

onPause():این متد زمانی که کاربر از activity جاری خارج می شود صدا زده می شود.البته صدا زده شدن این متد به این معنی نیست که activity از بین می رود.کارهایی مثل نگهداری و ذخیره اطلاعات اساسی در این متد می تواند انجام شود زیرا ممکن است کاربر دیگر به این activity باز نگردد و داده های آن از بین برود.

پیاده سازی رابط کاربری

هرactivity دارای یک رابط کاربری و هر رابط کاربری دارای viewهای متفاوتی است.

هر رابط کاربری از ساختار سلسله مراتبی تعدادی از viewها که از کلاس View به ارث برده اند ایجاد شده است.هر view یک قسمت مشخص مستطیلی شکل را از یک activity اشغال می کند که کاربر می تواند به وسیله آن با برنامه ارتباط برقرار کند.برای مثال دکمه یک view است که کاربر برای انجام دادن یک کار مشخص روی آن کلیک میکند.

اندروید شامل یک سری از viewهای از پیش ساخته شده برای استفاده در برنامه های مختلف است.برای مثال Widgetهایی مانند text field ,checkbox و image.همچنین شامل Layoutهای متفاوتی است که می توانند سامان دهنده viewهای متفاوتی باشند.Layoutها از کلاس ViewGroup مشتق شده اند.

همچنین در صورت نیاز می توانیم از کلاس های View و  ViewGroup به ارث ببریم و viewهای مورد نیاز خودمان را بسازیم.

نحوه تعریفactivity در manifest

برای دسترسی سیستم به activity های برنامه به منظور اجرای آن activityها نیاز است تا آنها را در فایل manifest تعریف کنیم.بدین منظور مانند زیر عمل می کنیم:

<manifest ... >
  <application ... >
      <activity android:name=".ExampleActivity" />
      ...
  </application ... >
  ...
</manifest >

خواص متفاوتی وجود دارند که در تگ activity می توانیم تعریف کنیم.برای مثال می توانیم برای activity خود یک label در نظر بگیریم و یا مثلا یک icon مشخص کنیم ولی هیچ کدام از این ها برای تعریف activity در فایل manifest اجباری نیستند.به غیر از android:name که نام activity است باید تعریف شود.
بعد از اینکه برنامه را منتشر کردیم نباید نام activity را تغییر دهیم زیرا ممکن است باعث از کار افتادن برنامه بعد از آپدیت برنامه توسط کاربرها شود.یک سری تغیرات را نباید بعد از پابلیش برنامه انجام دهیم.لیست آن ها را می توانید در اینجا مشاهده کنید.

استفاده ازintent filterها

یک activity ممکن است شامل چند intent filter مختلف باشد و هر intent filter مشخص کننده نحوه اجرا کردن این activity توسط سایر componentها است.اگر برنامه ای که می نویسید قرار نیست توسط سایر برنامه های دیگر اجرا شود بنابراین نیاز نیست که intent filter خاصی به غیر از android.intent.action.MAIN که برای مشخص کننده نقطه ورود به برنامه هست نوشته شود.

یک دیدگاه برای “Activity #1”

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *