مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت پنجم


سلام و خسته نباشید خدمت همه
قسمت پنجم از مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید رو در پیش داریم که میتونید از طریق لینک های زیر به توضیحات و قسمت های قبلی دسترسی داشته باشید ، امروز میریم سراغ ده سوال بعدی...
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت اول
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت دوم
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت سوم
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت چهارم


۴۱. چرخه حیات فرگمنت را توضیح دهید

on Attach :
instance یک فرگمنت به instance اکتیویتی مرتبط است ، معمولا در این متد یک نمونه از اکتیویتی مرجع را برای کار ها اولیه دریافت می کنید.

on Create :
سیستم این متد را زمانی که فرگمنت ساخته می شود فراخوانی می کند ، شما باید کار های اولیه ای که میخواهید در روند pause و stop و سپس resume نگه داری شوند را در این متد انجام دهید

on CreateView :
سیستم این متد را زمانی که میخواهد برای بار اول رابط کاربری را طراحی کند فراخوانی می کند. برای رسم یک رابط کاربری برای فرگمنت خود باید ریشه ( root ) لی اوت خود را به صورت view از این تابع بازگردانی ( return ) کنید. اگر فرگمنت رابط کاربری ای ندارد می توانید null برگردانید.

on ActivityCreated :
این متد بعد از اجرای متد onCreateView در اکتیویتی مرجع فراخوانی می شود و سلسله مراتب ساخت نمونه از فرگمنت و اکتیویتی اجرا می شود. در این مرحله شما می توانید با استفاده از تابع findViewById به ویو ها دسترسی داشته باشید برای مثال از این مرحله به بعد شما می توانید از آبجکت هایی که نیاز به Context دارند نمونه گیری کنید.

on Start :
سیستم این متد را زمانی که فرگمنت نمایان ( visible ) می شود فراخوانی می کند.

on resume :
سیستم این متد را زمانی که فرگمنت فعالیت خود را شروع می کند فراخوانی می کند.

on pause :
سیستم این متد را دقیقا زمانی که فرگمنت ترک می شود فراخوانی می کند ؛ معمولا این متد جایی است که شما باید کار هایی که باید فراتر از session فعلی کاربر ، فعالیت خود را انجام دهند را ثبت کنید.

on Stop :
سیستم این متد را زمانی که فرگمنت فعالیتش متوقف می شود فراخوانی می شود.

on DestroyView :
با فراخوانی این متد ویو فرگمنت نابود می شود

on Destory :
فراخوانی می شود تا state فرگمنت را به کلی نابود سازد.


۴۲. تفاوت اکتیویتی و فرگمنت چیست ؟ ارتباطشان رو توضیح دهید.

اکتیویتی یک کامپوننت اندروید است که صفحه ای ارائه می دهد که کاربر می تواند با آن تعامل داشته باشد در حالی که فرگمنت یک بخش یا رفتارهایی از رابط کاربری درون یک اکتیویتی است ( که دارای چرخه حیات خاص و رخداد های ورودی خاص خودش است و می تواند در هر زمان دلخواهی حذف یا اضافه شود. )


۴۳. در چه مواقعی باید استفاده از فرگمنت را به استفاده از اکتیویتی ترجیح دهیم ؟

  • هنگامی که کامپوننت های در رابط کاربری داریم که باید در چند اکتیویتی استفاده شوند.
  • هنگامی که چندین ویو هستند که باید در کنار هم استفاده شوند ( مانند view pager ها )
  • هنگامی که داده هایی دارید که باید هنگام restart شدن اکتیویتی ها نگهداری شوند.


۴۴.تفاوت replace و add کردن فرگمنت در backstack چیست ؟

replace : فرگمنت فعلی را حذف می کند و فرگمنت جدید را add می کند ، یعنی اگر شما در فرگمنت جدید دکمه back را فشار دهید در فرگمنت قبلی متد on CreateView دوباره اجرا می شود.

Add : فرگمنت فعلی را نگه می دارد و فرگمنت جدیدی اضافه می کند. از این رو هنگامی که دکمه back را فشار می دهید متد on CreateView فرگمنت قبلی دیگر اجرا نخواهد شد.

در کل هنگامی که از replace استفاده می کنید متد های چرخه حیات مانند on pause و on resume و on CreateView دوباره اجرا خواهند شد و این عمل در Add اتفاق نمی افتد.


۴۵. چرا توصیه می شود که حتما از تابع سازنده پیش فرض فرگمنت استفاده شود؟

دلیل اینکه شما باید حتما اطلاعات خود را از طریق bundle به فرگمنت منتقل کنید این است که هنگام تغییرات تنظیماتی ( configuration changes ) سیستم به صورت خودکار bundle شما را بازگردانی می کند این روشی است که شما می توانید وضعیت فرگمنت شما به همان صورت قبلی بازگردانده می شود.


۴۶. شما یک فرگمنت را با فرگمنت دیگری replace می کنید. از کجا مطمئن می شوید که با فشردن دکمه back کاربر به سمت فرگمنت قبلی هدایت می شود ؟

هرموقع نیاز باشد می توانید Fragment Transaction خود را با فراخوانی تابع addToBackStack قبل از فراخوانی تابع Commit در backstack ذخیره کنیم.


۴۷. چه CallBack هایی هنگام add کردن یا pop کردن یک فرگمنت از backstack فراخوانی می شوند؟

CallBack هایی که توسط تابع addOnBackStackChangedListener اضافه کردیم فراخوانی می شوند.


۴۸. فرگمنت های نگهداری شده چیستند ؟

به صورت پیش فرض فرگمنت ها همراه با اکتیویتی مرجع خود نابود و دوباره ساخته می شوند اما ما می توانیم توسط فراخوانی تابع setRetainInstance اجازه ی دور زدن این چرخه نابودی و بازیابی را به سیستم می دهیم و سیستم نمونه ای از وضعیت فعلی فرگمنت در طول این چرخه برای ما نگهداری می کند و همان را دوباره می سازد.


۴۹.تفاوت FragmentPagerAdapter و FragmentStatePagerAdapter چیست ؟

FragmentPagerAdapter :
فرگمنت هر صفحه ای کاربر آن را می بیند در حافظه ذخیره می شود با اینکه ویو نابود می شود. از این رو هنگامی که فرگمنت دوباره نمایان می شود ویو آن دوباره ساخته می شود در صورتی که نمونه فرگمنت ذخیره شده است و دوباره ساخته نمی شود . این مورد تاثیر به سزایی در میزان حافظه استفاده شده دارد. FragmentPagerAdapter به جای تابع remove ، تابع detach را در هر transaction فراخوانی می کند.

FragmentStatePagerAdapter :
تمامی نمونه فرگمنت نابود می شود به جز state فرگمنت که در حافظه ذخیره می شود. نتیجه ی این مورد ، تاثیر به سزایی در کم بودن میزان حافظه مورد استفاده است و برای رسیدگی به داده های زیاد می تواند کاربردی باشد همچنین استفاده از آن تاثیری بر پرفورمنس اپلیکیشن ندارد ، حتی اگر تعداد زیادی از فرگمنت ها داشته باشیم.


۵۰. پیام Toast در اندروید چیست ؟

Toast در اندروید برای نمایش اطلاعاتی در مدت زمان کوتاه به کاربر استفاده می شود ؛ یک toast شامل یک پیام است که نمایش داده می شود و بعد از چند لحظه ناپدید می شود.



ترجمه متنی از Anitaa Murthy

تشکر بابت مطالعه پست
لایک و حمایت یادتون نره
سوالی بود درخدمتم
نوشته شده با ❤️ توسط کوچیکتون حمیدرضا شجراوی =)))