B4A یک ابزار توسعه برنامه سریع یا RAD می باشد که برای توسعه برنامه های اندروید، IOS و desktop معرفی شده است. برای نصب و راه اندازی B4A می توانید به این لینک مراجعه کرده و محیط برنامه نویسی خود را آماده کنید.

بعد از اینکه این برنامه را نصب و راه اندازی کردید حال نوبت به کار کردن با این ابزار و نوشتن اولین برنامه اندرویدی می رسد. اما قبل از اینکه اولین برنامه را بنویسیم باید با یک سری مفاهیم آشنا شویم.

اگر بخوایم خیلی ساده صحبت کنیم هر برنامه B4A داخل یک فرآیند یا process اجرا می شود که هر فرآیند یک thread اصلی با نام UI Thread دارد که طول عمر این Thread یا نخ به اندازه طول عمر فرآیند می باشد. هر فرآیند می تواند چندین نخ داشته باشد که برای اجرای کارهای پس زمینه یا background task مفید هستند.

چه زمانی یک فرآیند آغاز می شود؟ زمانی که کاربر برنامه را اجرا می کند، با فرض اینکه در پس زمینه برنامه در حال اجرا نباشد، فرآیند شروع به کار می کند.

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

هر برنامه B4A از یک یا چندین فعالیت ساخته شده است. این فعالیت ها تقریبا مشابه فرم های ویندوزی می باشند. یک تفاوت بزرگی که وجود دارد این است زمانی که یک فعالیت در پیش زمینه یا foreground نباشد به منظور حفظ حافظه می تواند بسته شود یا به اختصار کشته شود 😉 و هر زمانی که نیاز باشد دوباره فعالیت ساخته می شود.

اگر تنظیمات پیکربندی دستگاه شما تغییر کند به عنوان مثال اگر گوشی خود را بچرخانید و صفحه هم چرخش داشته باشد، فعالیت موردنظر تخریب شده و دوباره ساخته خواهد شد.

زمانی که شما یک فعالیت را ایجاد می کنید با یک غالب کدی مانند زیر مواجه می شوید:

Capture1

متغیرها می توانند محلی یا عمومی باشند. متغیرهای محلی همانطور که می دانید در داخل یک متد یا یک تیکه کدی قرار داده می شود و فقط هم در همان تیکه کد یا متد قابل استفاده و دسترسی است. اما متغیرهای عمومی در کل یک کلاس قابل دسترسی و استفاده است. در B4A ما دو نوع متغیر عمومی داریم:

  1. process variables
  2. activity variables

process variable یا متغیرهای فرآیند:

این متغیرها تا پایان عمر فرآیند باقی می مانند و قابل استفاده هستند. این متغیر ها را باید در داخل متد Process_Globals تعریف کنید. این متد فقط یک بار اجرا می شود و این متغیرها برای تمامی فعالیت ها قابل استفاده می باشد.

باید به این نکته توجه داشته باشیم که نمی توان هر نوع داده ای را برای این متغیرها تعریف کرد. به عنوان مثال ویوها را نمی توان به عنوان متغیر فرآیند تعریف کرد دلیلش این است که نمی خواهیم به شی ای ارجاع داشته باشیم چون اگر به شی ای ارجاع داشته باشیم زمانی که یک فعالیتی تخریب شود تمام ویوهایی که در داخل آن فعالیت استفاده می شدند نیز تخریب می شوند و چون ما ارجاع دادیم garbage collector قادر نیست منابعی که اختصاص داده شده بود را آزاد یا free کند در نتیجه ما نشت حافظه یا memory leak خواهیم داشت.

activity variables یا متغیرهای فعالیت

این متغیرها را باید در داخل متد Globals تعریف کنیم. این متغیرها خصوصی هستند و فقط از فعالیت جاری قابل دسترسی می باشند. برخلاف متغیرهای فرآیند که از ماژول های دیگر هم قابل دسترسی بودند. برخلاف متغیرهای فرآیند، همه نوع داده ای را می توان تعریف کرد و هیچ محدودیتی ندارد. متد Globals قبل از اجرای هر فعالیتی، برخلاف متد Process_Globals که تنها یک بار اجرا می شود، اجرا می شود.

Sub Activity_Create (FirstTime As Boolean):

زمانی که یک فعالیت میخواهد ساخته شود این متد اجرا می شود. این متد برای ایجاد یا بارگذاری layout استفاده می شود. پارامتر ورودی این متد به ما می گوید که این فعالیت برای اولین بار است که ساخته می شود یا خیر. پارامتر FirstTime با توجه به فرآیند جاری مقدار می گیرد. از این پارامتر می توانید برای مقداردهی کردن متغیرهای فرآیند استفاده کنید.

به عنوان مثال شما یک فایل دارید که این فایل شامل لیستی از مقادیر است و می خواهید برای اولین باری که فعالیت ساخته می شود این فایل را فراخوانی کرده و مقادیرش را در داخل یک متغیر فرآیند قرار دهید. حال می دانیم که این لیست در همه جای برنامه قابل دسترسی است.

Sub Activity_Resume and Sub Activity_Pause (UserClosed As Boolean)

هروقت فعالیتی از پیش زمینه به پس زمینه منتقل می شود متد Activity_Pause فراخوانی می شود. البته زمانی هم که پیکربندی دستگاه شما تغییر می کند به عنوان مثال موقع چرخش دستگاه، فعالیت ابتدا pause شده و بعد تخریب و دوباره ساخته می شود. متد Activity_Pause اخرین جایی است که می توانید اطلاعات مهم را ذخیره کنید. این اطلاعات را یا می توانید در داخل فایل یا پایگاه داده ای ذخیره کنید یا اینکه در یک متغیر فرآیندی ذخیره کنید.

متد Activity_Resume، یا بعد از اینکه فعالیت ساخته شد فراخوانی می شود و یا اینکه فعالیتی pause شده باشد. توجه داشته باشید زمانی که فعالیت دیگری اجرا می کنید با استفاده از StartActivity، فعالیت جاری pause می شود و سپس فعالیت بعدی در صورت نیاز ساخته می شود.

با توجه به بحث بالا، Activity_Pause زمانی فراخوانی می شود که فعالیتی از پیش زمینه به پس زمینه منتقل شده باشد. این اتفاق زمانی می افتد که:

  1. فعالیت دیگری اجرا شده باشد
  2. دکمه Home دستگاه فشرده شده باشد
  3. رویداد تغییر پیکربندی فراخوانی شده باشد
  4. دکمه back دستگاه فشرده شده باشد

در سناریو ۱ و ۲، فعالیت pause شده و برای استفاده مجدد در حافظه نگه داری می شود. در سناریو ۳ فعالیت pause شده، تخریب شده و سپس دوباره ساخته شده است. در سناریو ۴ فعالیت pause و تخریب شده است. فشردن دکمه back بیانگر بستن فعالیت می باشد. در این مورد شما نیازی ندارید تا اطلاعات خاصی را ذخیره نمایید.

پارامتر UserClosed در سناریو ۴ مقدار true می گیرد اما در بقیه سناریو ها مقدارش false می شود. البته به این نکته هم توجه کنید که با فراخوانی Activity.Finish مقدار این پارامتر true خواهد شد. با استفاده از این پارامتر می توانید تصمیم گیری کنید که چه مقادیری را ذخیره کنید و یا چه مقادیری را حذف و یا مقداردهی کنید.

منبع: B4A

۱ دیدگاه به ثبت رسیده است .

  1. حسن حسنی می‌گه:

    سلام
    تشکر جهت آموزش این مطلب.
    لطفاً در صورت امکان تفاوت توسعه نرم افزار با استفاده Android Studio با B4A را بفرمایید. مزایا معایب برتریها و…
    ممنون

مشترک خبرنامه شوید

  • RSS
  • Delicious
  • Digg
  • Facebook
  • Twitter
  • Linkedin
  • Youtube

نقش مدیر تضمین کیفیت

نقش مدیر تضمین کیفیت در چابک چیست؟ آیا ما واقعا ...

چگونه وارد کار تست ن

مثل همه ی کارها، کار تست نرم افزار و انتخاب ...

ابزارهای مفید برای ت

امروزه افراد زیادی هستند که از موبایل خود برای وبگردی ...

BDD Best Practice

معرفی BDD BDD یا توسعه رفتار محور یک متدولوژی است برای ...

Agile Test Strategy

در محیط چابک یا agile، جایی که ما روی اسپرینت ...