آموزش اندروید-قسمت دوم-چرخه حیات اندروید(Android Life Cycle)

Activity چیست؟

هر برنامه اندرویدی که اجرا می شود. یک Activity اجرا می شود. این Activity می تواند Activity دیگری را صدا بزند و این کار ادامه پیدا کند. وظیفه مدیریت کردن این Activity ها را Task به عهده دارد. Task این Activity ها را در یک Stack ، Push می کند و به ترتیب آنها را Pop می کند. بیاید با یک مثال توضیح بالا را روشن بکنیم.

فرض کنید شما برنامه Gmail موبایل تان را اجرا می کنید. با این کار اکتیویتی Home جمیل اجرا می شود(اولین اکتیویتی سمت چپ).

activity

از همین جا وظیفه Task آاغاز می شود. Task اکتیویتی Home را در Stack قرار می دهد. زمانی که شما بر روی آیکون Primary کلیک می کنید، اکتیویتی Primary نشان داده می شود و Task این Activity را بر روی اکتیویتی Home قرار می دهد.با کلیک بر روی آیکون Compose اکتیویتی Compose اجرا می شود و Task این اکتویتی را بر روی دو اکتیویتی قبلی قرار می دهد.

به شکل زیر نگاه کنید.

Stack

هر بار که شما بر روی دکمه بازگشت موبایل تان کلبک کنید ،Task بالاترین Activity را از Stack خارج می کند و شما به صفحه قبلی(اکتیویتی فبلی) دسترسی پیدا می کنید.

استفاده از Activity برنامه A در برنامه B

یکی از ویژگی های سیستم عامل اندروید استفاده از Activity های برنامه های دیگز در برنامه خودمان است. فرض می کنیم که شما یک برنامه برای دریافت و ارسال sms نوشته اید. یک دکمه بر روی برنامه قرار داده اید به نام Contact . با استفاده از این دکمه شما به اکتیویتی برنامه Contact اندروید دسترسی پیدا می کنید و می توانید از بین آنها فردی را انتخاب کنید. پس از انتخاب فرد دوباره به برنامه خودمان یا در حقیقت اکتیوتی خودمان دسترسی پیدا می کنیم و می توانیم از اظلاعات این فرد در برنامه خودمان استفاده کنیم. مثلا از شماره تلفن آن برای ارسال sms استفاده کنیم.

توجه کنید که Task برنامه ما ابتدا اکتیویتی اصلی برنامه خودمان را اجرا کرد و در Stack قرار داد. سپس به اکتبویتی برنامه Contact اندروید دسترسی پیدا کرذ و آن را در Stack قرار داد و پس از انتخاب قرد ،آن اکتیویتی را از Stack خارج کرد و اکتیویتی اصلی برنامه خودمان دوباره فعال شد.

در گوشی های اندرویدی هر گاه شما کلید Home را نگه دارید به Task manager سیستم عامل اندروید دسترسی پیدا می کنید. در Task manager می توانید Task های در حال اجرا را ببینید. هر کدام از این Task ها شامل چند Activity می باشند.

Process چیست؟

به شکل زیر نگاه کنید

Process

گفتیم که Activity یک برنامه می تواند از Activity برنامه دیگر استفاده کند. در شکل بالا اکتیویتی Contact با استفاده از یک Process ، اکتیویتی Gmail را صدا زده است. برای مثال فرض کنید می خواهید مشخصات یک فرد را که در برنامه Contact وجود دارد ، برای یکی از دوستان تان ایمیل کنید. بر روی آن Contact انگشت تان را نگاه می دارید تا یک منو ظاهر شود. از این منو گزینه Send namecard via را انتخاب می کنید. اکنون منویی دیگر ظاهر می شود که در آن لیست برنامه هایی که شما می توانید به آنها دسترسی پیدا کنید را نمایش می دهد. زمانی که آیتم Gmail را انتخاب می کنید در حقیقت دارید با استفاده از یک Process ، اکتیویتی Home برنامه Gmail را به برنامه خودتان فرا می خوانید.

همین طور می توانید با استفاده ازProcess ، اکتیویتی برنامه های دیگر را در برنامه در حال اجرا بکار بگیرید.

به شکل زیر نگاه کنید.

Process

شما دارید با برنامه Gmail گوشی تان کار می کنید. قصد دارید یک فایل برای یکی از دوستان تان بفرستید. بنابراین بر روی دکمه Compose کلیک می کنید. با این کار اکتیویتی Compose برنامه Gmail در بالای Stack قرار می گیرد. اکنون می خواهید یک فابل به این ایمیل الصاق کنید. بر روی دکمه Attach کلیک می کنید. یک منو برای شما باز می شود و از شما می خواهد تا برنامه مورد نظرتان را برای الصاق فایل انتخاب کنید . فرض می کنیم شما برنامه AndExplorer را انتخاب می کنید. با انتخاب این برنامه یک Process اجرا می شود و اکتیویتی AndExplorer را در Stack برنامه Gmail قرار می دهد.

پس بطور خلاصه وظیفه Process این است که Activity ی یک برنامه را در برنامه دیگری صدا بزند.

امیدوارم تا اینحا با تفاوت بین Activity,Task,Process آشنا شده باشید.

مدیریت حافظه در اندروید

سیستم عامل اندروید به طور خودکار Memory گوشی را مدیریت می کند. زمانی که شما یک برنامه می نویسید و اجرا می کنید، اندروید منابع و رسورس های لازم را در اختیار برنامه قرار می دهد. در صورتی که نیاز باشد، اندروید برنامه های در حال اجرا را که توسط کاربر و یا دیگر برنامه ها استفاده نمی شود، Kill می کند تا بتواند منابع و رسورس های آزاد شده را در اختیار برنامه های دیگر قرار دهد. اندروید این کار را با استفاده از یک الگوریتم هوشمند و پشرفته انجام می دهد تا برنامه های در حال استفاده به طور ناگهانی بسته نشود.

کاری شبیه به این کار را Garbage Collector در C# انجام می دهد.

برای درک بهتر مدیریت حافظه در اندروید یک سناریو را با هم بررسی می کنیم.

برنامه Gmail در حال اجرا می باشد. Stack برنامه شامل اکتیویتی های Home،Primary و Compose می باشد. در اکتیویتی Compose تصمیم می گیریم اکتیویتی برنامه Contact را صدا بزنیم. اکتیویتی برنامه Contact به Stack برنامه Gmail اضاقه می شود. شکل زیر را نگاه کنید.

Managment memory

نویسندگان: رضا ابراهیمی و محمود کعبی

با تشکر از آقای رضا ابراهیمی که زحمت تدریس و بررسی منابع با ایشان می باشد
منابع

ویدئو های آموزشی سایت http://www.pluralsight.com

استفاده از مطالب این وبلاگ با ذکر منبع آن بلا مانع است.

Advertisements

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s

%d وب‌نوشت‌نویس این را دوست دارند: