در توسعه اپلیکیشنهای اندروید با B4A، اکتیویتی (Activity) یکی از اجزای اصلی و حیاتی است که رابط کاربری برنامه شما را نمایش میدهد و با کاربر تعامل دارد. هر اکتیویتی یک چرخه حیات (Lifecycle) مشخص دارد که شامل مجموعهای از رویدادها میشود. درک صحیح این چرخه حیات برای ساخت اپلیکیشنهای پایدار، کارآمد و با تجربه کاربری خوب ضروری است.
اکتیویتی چیست؟
اکتیویتی در واقع یک صفحه یا یک بخش از رابط کاربری اپلیکیشن شماست. به عنوان مثال، صفحه اصلی، صفحه تنظیمات، یا صفحه نمایش جزئیات یک محصول، هر کدام میتوانند یک اکتیویتی جداگانه باشند. وقتی کاربر بین این صفحات جابجا میشود، اکتیویتیها در مراحل مختلف چرخه حیات خود قرار میگیرند.
رویدادهای اصلی چرخه حیات اکتیویتی در B4A:
1.
* زمان فراخوانی: این اولین رویدادی است که هنگام ایجاد اکتیویتی فراخوانی میشود. این رویداد فقط یک بار در طول عمر اکتیویتی اتفاق میافتد.
* کاربرد: بهترین مکان برای انجام تنظیمات اولیه اکتیویتی، بارگذاری فایلهای لایوت (با
* مثال کد:
* نکته: پارامتر
2.
* زمان فراخوانی: زمانی که اکتیویتی برای کاربر قابل مشاهده و فعال میشود. این اتفاق زمانی میافتد که اکتیویتی برای اولین بار ایجاد شده و نمایش داده میشود، یا زمانی که کاربر از یک اکتیویتی دیگر به این اکتیویتی بازمیگردد، یا زمانی که اپلیکیشن از حالت پسزمینه (Background) به حالت پیشزمینه (Foreground) میآید.
* کاربرد: شروع انیمیشنها، پخش صدا، بهروزرسانی دادهها از سرور، یا هر عملیاتی که باید زمانی که اکتیویتی فعال است انجام شود.
* مثال کد:
3.
* زمان فراخوانی: زمانی که اکتیویتی دیگر در پیشزمینه نیست اما هنوز به طور کامل از بین نرفته است. این اتفاق زمانی میافتد که کاربر به اکتیویتی دیگری میرود، یا اپلیکیشن را به پسزمینه میفرستد (مثلاً با فشردن دکمه Home).
* کاربرد: ذخیره اطلاعات موقت یا وضعیت فعلی کاربر (مثلاً متن وارد شده در یک فیلد)، توقف انیمیشنها یا پخش صدا، و آزادسازی منابعی که در حالت فعال بودن اکتیویتی استفاده میشدند. این رویداد باید سریع اجرا شود.
* مثال کد:
* نکته: پارامتر
4.
* زمان فراخوانی: زمانی که اکتیویتی به طور کامل از حافظه حذف میشود. این اتفاق زمانی میافتد که کاربر اکتیویتی را میبندد (با دکمه Back و
* کاربرد: آزادسازی تمام منابعی که در
* مثال کد:
سناریوهای عملی و نکات مهم:
با درک عمیق این رویدادها و استفاده صحیح از آنها، میتوانید اپلیکیشنهای B4A قدرتمند و بهینهای بسازید که به خوبی با چرخه حیات سیستم عامل اندروید سازگار باشند.
اکتیویتی چیست؟
اکتیویتی در واقع یک صفحه یا یک بخش از رابط کاربری اپلیکیشن شماست. به عنوان مثال، صفحه اصلی، صفحه تنظیمات، یا صفحه نمایش جزئیات یک محصول، هر کدام میتوانند یک اکتیویتی جداگانه باشند. وقتی کاربر بین این صفحات جابجا میشود، اکتیویتیها در مراحل مختلف چرخه حیات خود قرار میگیرند.
رویدادهای اصلی چرخه حیات اکتیویتی در B4A:
1.
Activity_Create:* زمان فراخوانی: این اولین رویدادی است که هنگام ایجاد اکتیویتی فراخوانی میشود. این رویداد فقط یک بار در طول عمر اکتیویتی اتفاق میافتد.
* کاربرد: بهترین مکان برای انجام تنظیمات اولیه اکتیویتی، بارگذاری فایلهای لایوت (با
Activity.LoadLayout)، مقداردهی اولیه متغیرها و کامپوننتهای UI است.* مثال کد:
کد:
محتوای بلوک کدها در دسترس شما نیست. برای مشاهده بلوک کدها، وارد انجمن شوید یاثبت نام کنید
FirstTime نشان میدهد که آیا این اولین باری است که اکتیویتی ایجاد میشود یا خیر (مثلاً پس از چرخش صفحه).2.
Activity_Resume:* زمان فراخوانی: زمانی که اکتیویتی برای کاربر قابل مشاهده و فعال میشود. این اتفاق زمانی میافتد که اکتیویتی برای اولین بار ایجاد شده و نمایش داده میشود، یا زمانی که کاربر از یک اکتیویتی دیگر به این اکتیویتی بازمیگردد، یا زمانی که اپلیکیشن از حالت پسزمینه (Background) به حالت پیشزمینه (Foreground) میآید.
* کاربرد: شروع انیمیشنها، پخش صدا، بهروزرسانی دادهها از سرور، یا هر عملیاتی که باید زمانی که اکتیویتی فعال است انجام شود.
* مثال کد:
کد:
محتوای بلوک کدها در دسترس شما نیست. برای مشاهده بلوک کدها، وارد انجمن شوید یاثبت نام کنید
3.
Activity_Pause:* زمان فراخوانی: زمانی که اکتیویتی دیگر در پیشزمینه نیست اما هنوز به طور کامل از بین نرفته است. این اتفاق زمانی میافتد که کاربر به اکتیویتی دیگری میرود، یا اپلیکیشن را به پسزمینه میفرستد (مثلاً با فشردن دکمه Home).
* کاربرد: ذخیره اطلاعات موقت یا وضعیت فعلی کاربر (مثلاً متن وارد شده در یک فیلد)، توقف انیمیشنها یا پخش صدا، و آزادسازی منابعی که در حالت فعال بودن اکتیویتی استفاده میشدند. این رویداد باید سریع اجرا شود.
* مثال کد:
کد:
محتوای بلوک کدها در دسترس شما نیست. برای مشاهده بلوک کدها، وارد انجمن شوید یاثبت نام کنید
UserClosed نشان میدهد که آیا کاربر به طور صریح اکتیویتی را بسته است (مثلاً با دکمه Back) یا خیر.4.
Activity_Destroy:* زمان فراخوانی: زمانی که اکتیویتی به طور کامل از حافظه حذف میشود. این اتفاق زمانی میافتد که کاربر اکتیویتی را میبندد (با دکمه Back و
UserClosed در Activity_Pause برابر با True باشد) یا سیستم عامل برای آزادسازی حافظه، اکتیویتی را از بین میبرد.* کاربرد: آزادسازی تمام منابعی که در
Activity_Create یا Activity_Resume تخصیص داده شدهاند (مانند بستن فایلها، قطع اتصال به دیتابیس، لغو ثبت BroadcastReceiverها).* مثال کد:
کد:
محتوای بلوک کدها در دسترس شما نیست. برای مشاهده بلوک کدها، وارد انجمن شوید یاثبت نام کنید
سناریوهای عملی و نکات مهم:
- ذخیره و بازیابی وضعیت (State Preservation): اگر میخواهید وضعیت UI (مثلاً متن یک EditText) را هنگام چرخش صفحه یا زمانی که اکتیویتی به پسزمینه میرود حفظ کنید، میتوانید از
Activity_Pauseبرای ذخیره آن و ازActivity_ResumeیاActivity_Create(با بررسیFirstTime) برای بازیابی آن استفاده کنید. B4A به طور خودکار برخی از وضعیتها را حفظ میکند، اما برای دادههای پیچیدهتر نیاز به مدیریت دستی دارید. - مدیریت چرخش صفحه: هنگام چرخش صفحه، اکتیویتی به طور پیشفرض از بین رفته و دوباره ایجاد میشود (
DestroyسپسCreate). اگر نمیخواهید این اتفاق بیفتد، میتوانید با اضافه کردنActivity.SetScreenOrientation(Activity.PORTRAIT)یاActivity.SetScreenOrientation(Activity.LANDSCAPE)جهت صفحه را ثابت کنید. - عملیاتهای سنگین: از انجام عملیاتهای سنگین و طولانیمدت در
Activity_Pauseخودداری کنید، زیرا این کار میتواند باعث کندی و عدم پاسخگویی اپلیکیشن شود. - آزادسازی منابع: همیشه مطمئن شوید که منابعی مانند دیتابیسها، فایلها، یا اتصالات شبکه را در
Activity_Destroyبه درستی آزاد میکنید تا از نشت حافظه (Memory Leak) جلوگیری شود.
با درک عمیق این رویدادها و استفاده صحیح از آنها، میتوانید اپلیکیشنهای B4A قدرتمند و بهینهای بسازید که به خوبی با چرخه حیات سیستم عامل اندروید سازگار باشند.