View Full Version : توضیح Activity
ayub_coder
یک شنبه 19 خرداد 1392, 08:38 صبح
با سلام
سوالم اینه که آیا activity ها همون فرم ها در سایر زبان های برنامه نویسی مثل دلفی و سی شارپ هستن؟
اگه میشه توضیح بدین؟
Nevercom
یک شنبه 19 خرداد 1392, 13:18 عصر
از این جهت که Activity هم مثل Form ظاهر گرافیکی برنامه رو نمایش میدن، شباهت دارن به هم
در عمل همینطور هست که مثل فرم ها شما در اندروید ظاهر برنامه رو توسط Activity نمایش میدید، اما تفاوتی که وجود داره بخاطر ماهیت دستگاه هایی هست که اندروید روی اونها اجرا میشه.
دستگاه های قابل حمل، معمولاً حافظه (RAM) اندکی دارن، توان پردازشیشون چندان زیاد نیست و باتری شون توان محدودی داره. به همین جهت تمام تلاششون بر این بوده که فریم وورک رو برای این دستگاه ها بهینه کنن و بعضی جاها نیاز بوده یک مفهوم جدید معرفی بشه مثل همین Activity.
چیزی که در مورد اکتیویتی ها مهم هست چرخه ی عمر یا Life Cycle هست.
اکتیویتی شما تا زمانی که نمایش داده میشه، جزو پروسه های foreground محسوب میشه و توان پردازشی بیشتری بهش اختصاص داده میشه. همیشه ما فقط 1 اکتیویتی درحال نمایش داریم و شاید این یکی از تفاوت ها با فرم ها باشه.
اگر اکتیویتی شما از حالت foreground خارج بشه، مثلاً کلید Home رو بزنید، سیستم بنا به شرایط تصمیم میگیره که اکتیویتی رو کامل ببنده یا نه که این برمیگرده به حافظه ی در دسترس و توان پردازشی دستگاه
پس هیچ تعهدی وجود نداره وقتی اکتیویتی از حالت نمایش خارج بشه، باز بمونه. اینجاست که شما بعنوان برنامه نویس باید توجه داشته باشید که اگر نیاز هست داده هایی رو جایی ذخیره کنید و یا هر کاری که نیاز هست تا اطمینان حاصل کنید اگر برنامه ی شما به حالت Pause بره داده ها از دست نمیرن و یا خیلی موارد دیگه.
با توجه به این توضیحات اگر شما از اکتیویتی اول در برنامه به اکتیویتی دوم در همون برنامه هم برید باز این شرایط صادق هست، با این تفاوت که اکتیویتی های یک برنامه در یک Stack یا پشته قرار میگیرن که وقتی شما از دکمه ی Back استفاده می کنید به اکتیویتی قبلی بر میگردید (البته مختص به اکتیویتی های یک برنامه نیست و درواقع تمام اکتیویتی ها در پشته قرار میگیرن) و همیشه هم فقط یک اکتیویتی درحال اجراست و نمایش داده میشه.
برای توضیحات بهتر و بیشتر و دقیق تر، Activity Life Cycle رو جستجو کنید.
matrix-program
یک شنبه 19 خرداد 1392, 13:28 عصر
( اکتیویتی در اندروید Activities)
یه فعالیت کارش اینه که که یه صفحه نمایش رو با رابط کاربری (UI) نشون بده. (مثلا کاربر می خواد ایمیل هاش رو چک کنه، همون صفحه ای که لیست ایمیل هاش رو نشون می ده یه فعالیته، وقتی رو ایمیل کلیک میکنه یه فعالیت دیگه شروع میشه که باعث میشه کاربر یه صفحهی دیگه رو ببینه، وقتی می خواد ایمیل بفرسته یه صفحهی دیگه براش باز میشه که یه فعالیت دیگه است)
اگثر برنامه ها از بیش از یک فعالیت استفاده می کنن.
وقتی یک فعالیت شروع میشه، به پشتهی بازگشت (back stack) هل داده میشه. (push میشه) - خوب مثلا وقتی کاربر اولین صفحهی یه برنامه رو باز می کنه، بعد جایی کلیک میکنه و فعالیت دیگه ای باز میشه، فعالیت قبلی متوقف میشه (داخل پشته هل داده میشه) و فعالیت جدید روی قبلی شروع به کار میکنه، وقتی کاربر دکمه بازگشت (http://bayanbox.ir/id/7275303196185031934?view (http://bayanbox.ir/id/7275303196185031934?view)) رو میزنه، فعالیت فعلی رو متوقف می کنه (میبنده) و فعالیت قبلی رو از همون جایی که متوقف کرده بود، اجرا میکنه. (در واقع از تو پشته پاپ میکنه) -
رابط کاربری با XML یا مستقیما از خود جاوا ساخته میشه.
میتونید طول عمر یه فعالیت رو با توابع مختلفی زیرنظر داشته باشید، توابعی مثه ()onStart یا ()onPause. تا روند اجرای هر فعالیتی رو کنترل کنید.
برگرفته شده از AndroidCode.ir
ayub_coder
یک شنبه 19 خرداد 1392, 23:38 عصر
پس وقتی من از یه فعالیت به فعالیت دیگه میرم فعالیت قبلی Pause میشه درسته؟ مثلا اگه من در فعالیت 1 یه حلقه تکرار داشته باشم و برم به فعالیت 2 حلقه تکرار قعالیت 1 به حالت غیر فعال در میاد ؟ و وقتی برگشتم دوباره شروع میشه؟
Modernidea
دوشنبه 20 خرداد 1392, 00:43 صبح
سلام
بله درسته.
البته در صورتی حلقه دوباره اجرا میشه که به نحوی دوباره حلقه صدا زده بشود یا اجرا بشود. مثلا حلقه در یکی از توابع مانند onCreate وجود داشته باشد که به اجرا در آید در غیر این صورت حلقه اجرا نمیشود. یعنی اگر شما در Activity1 دکمه را ایجاد کرده باشید و با زدن آن دکمه حلقه ای اجرا شود و سپس به هر شکلی Activity2 را در طی اجرای حلقه نمایش دهید و سپس دوباره به Activity1 برگردید، حلقه مورد نظر اجرا نمیشود.
جهت اینکه فرایندی در پس زمینه برنامه و کاملا مستقل اجرا و پردازش شود راه های گوناگونی وجود دارد که یکی از بهترین آن AsyncTask (http://developer.android.com/reference/android/os/AsyncTask.html)است. این کلاس یک راه آسان و کاربردی برای اجرای امور در پس زمینه برنامه و بروزرسانی رابط کاربری را فراهم میکند.
این عکس درک بهتری در مورد چرخه حیات در اندروید را ارائه میده.
105339
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.