بررسی Task و Back Stack در اندروید (بخش دوم)

سه شنبه ۰۹ مرداد ۹۷ توسط امیرحسین حیدری

در ادامه بررسی  Task و  Backstack به تغییر رفتار پیش فرض این موارد توسط برنمه نویس  رسیدیم.

مشخصه launchMode و معادل آن یعنی Flag برای startActivity به ما اجازه میدهند تا چگونگی ایجاد نمونه جدید مرتبط با هر اکتیویتی و Task جاری را تعیین نماییم. در زیر به حالتهای مختلف launchMode و Flag  اشاره شده است:

 launchMode— standard : حالت پیش فرض اکتیویتی میباشد. در این حالت یک نمونه جدید اکتیویتی ایجاد شده و در Task مربوطه قرار میگیرد. در این حالت چندین نمونه از اکتیویتی میتواند ایجاد گردد. هر نمونه میتواند به Task جداگانه ای متعلق باشد و همچنین هر Task میتواند چندین نمونه مربوط به خود را داشته باشد.

launchMode-singleTop | flag — FLAG_ACTIVITY_SINGLE_TOP : این حالت زمانی که یک اکتیویتی قبلا اجرا نشده باشد همانند حالت استاندارد میباشد ولی اگر اکتیویتی قبلا اجرا شده باشد، همان اکتیویتی با صدا زدن متد onNewIntent، از سر گرفته میشود .

 launchMode-singleTask | flag — FLAG_ACTIVITY_NEW_TASK : اگر اکتیویتی در Taskی که قبلا ایجاد شده است موجود نباشد، این حالت موجب آغاز شدن اکتیویتی در یک Task شده و اکتیویتی جدید بعنوان اولین نمونه در Back Stack  قرار میگیرد و در غیر اینصورت  Task، حالت قبلی ذخیره شده اکتیویتی را اجرا کرده و به نمایش میگذارد. در این حالت فقط یک نمونه از اکتیویتی میتواند ایجاد گردد و دکمه back میتواند کاربر را به اکتیویتی قبل موجود در Task  برگرداند.

launchMode — singleInstance : این حالت شبیه به حالت singleTask میباشد بغیر از اینکه سیستم اندروید هیچ اکتیویتی دیگری را به Task نگهدارنده نمونه اضافه نمیکند. به عبارتی اکتیویتی همیشه یکتا بوده و تنها عضو آن Task  میباشد. هر اکتیویتی که در این حالت آغاز شود، Task جدیدی را نیز ایجاد خواهد کرد.

 flag — FLAG_ACTIVITY_CLEAR_TASK: این حالت تمام Task های مرتبط با اکتیویتی را که قبلا ایجاد شده را پاک کرده و بعنوان ریشه جدید در Task قرار میگیرد و اکتیویتی های قبلی پایان میپذیرد. این حالت صرفا همزمان با FLAG_ACTIVITY_NEW_TASk مورد استفاده قرار میگیرد.

flag — FLAG_ACTIVITY_CLEAR_TOP: در این حالت اگر اکتیویتی قبلا در Task جاری در حال اجرا باشد، بجای اینکه نمونه جدیدی از اکتیویتی ساخته شود، تمام اکتیویتی های بالای آن از بین میرود.

 

چند مورد از مهمترین مشخصه های اکتیویتی ها در مانیفست:

noHistory: اگر در حالت true تنظیم شود، اکتیویتی جاری را از بین برده و آن را از back stack پاک میکند.

clearTaskOnLaunch: اگر در حالت true تنظیم شود، back stack  تا اکتیویتی لانچر پاک میشود.

finishOnTaskLaunch: مشابه حالت بالا فقط روی یک اکتیویتی کار میکند.

هر چند شاید استفاده از این جزییات کمی گمراه کننده بنظر برسد ولی یادگیری آن میتواند تسلط ما را در هدایت دقیق کاربر و در نتیجه توسعه حرفه ای تر اپلیکیشن های اندروید کمک کند.

 

منبع:  medium.com


کلیدواژه: اندروید اکتیویتی Android Activity Task Back stack

منابع:

ارسال دیدگاه:
برای ارسال دیگاه باید به سیستم وارد شوید و یا ثبت نام کنید. ثبت نام چند لحظه بیشتر زمان شما را نمیگیرد.