masoud
masoud
خواندن ۳ دقیقه·۵ سال پیش

چرخه حیات فرگمنت ها در اندروید

چرخه حیات فرگمنت ها در اندروید
چرخه حیات فرگمنت ها در اندروید

در مبحث قبلی در مورد چرخه حیات اکتیویتی ها صحبت کردیم در این مبحث قصد داریم در مورد چرخه حیات فرگمنت ها بحث کنیم:

فرگمنت ها از اندروید 3 (Api Level 11) با هدف ساختن UI های داینامیک و منعطف به اندروید برای صفحات بزرگ ،اضافه شد .

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

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

فرگمنت ها همیشه توسط اکتیویتی ها میزبانی می شوند یعنی حتما باید یک اکتیویتی وجود داشته باشد و به همین دلیل چرخه حیات اکتیویتی بر روی فرگمنت ها نیز تاثیر گذار است. به عنوان مثال اگر اکتیویتی on Pause شود همه فرگمنت های آن اکتیویتی هم on Pause می شود.



چرخه حیات فرگمنت ها در اندروید
چرخه حیات فرگمنت ها در اندروید


وقتی یک فرگمنت اجرا می شود به ترتیب :

on Attach()

on Create()

on CreateView()

on ViewCreated()

on ActivityCreated()

on Start()

on Resume()

اجرا می شود .

تا اینجا فرگمنت به نمایش در آمده و کاربر میتواند با آن در تعامل باشد.

وقتی فرگمنت در حالت on Resume قرار دارد چند حالت ممکن است پیش بیاید:

- - کاربر از فرگمنت A به فرگمنت B کوچ کند در این حالت ابتدا رویدادهای on Attach و on Create برای فرگمنت B اجرا می شود و سپس رویداد on Pause و on Stop و on DestroyView برای فرگمنت A اجرا می شود و سپس در ادامه چرخه حیات فرگمنت B به صورت on CreateView و on ViewCreated و on ActivityCreated و on Start و on Resume اجرا می شود.

رویداد on Pause برای اکتیویتی مبدا اجرا می شود و رویداد های on Create و on Pause و on Resume برای اکتیویتی مقصد و در نهایت رویداد on Stop برای اکتیویتی مبدا اجرا می شود.

- - کاربر با فشردن دکمه Home برنامه را به Background منتقل کند در این حالت متدهای on Pause و on Stop اجرا می شود.حال اگر کاربر مجددا به برنامه بازگردد متد های on Start و on Resume اجرا می شود.

باید به یاد داشت سیستم عامل در صورت نیاز به منابع سیستمی اقدام به فراخوانی متد on Destroy برنامه هایی میکند که به مدت طولانی در Background مانده باشد که در این حالت چرخه حیات اکتیویتی مربوطه از ابتدا اجرا می شود.

- - کاربر با زدن دکمه Back از برنامه کاملا خارج شود در این حالت متد های on Pause و on Stop و on DestroyView و on Destroy اجرا می شود.

اگر با زدن دکمه Back از فرگمنت B به فرگمنت A بازگردد برای فرگمنت B رویدادهای on pause و on Stop و on DestroyView و on Destroy اجرا می شود و در ادامه برای فرگمنت A رویدادهای on CreateView و on ViewCreated و on ActivityCreated و on Start و on Resume اجرا می شود.

- - وقتی کاربر گوشی را میچرخاند چرخه حیات فرگمنت به این صورت اجرا می شود :

on Pause

on Stop

on DestroyView

on Destroy

on Attach

on Create

on CreateView

on ViewCreated

on ActivityCreated

on Start

on Resume


? رویداد on Attach :

این رویداد بعد از اینکه فرگمنت را به FragmentManager ارتباط دادین اجرا می شود و باعث می شود فرگمنت به اکتیویتی میزبان خود متصل شود.

? رویداد on Create :

عملکرد این رویداد شبیه به اکتیویتی هاست با این تفاوت که layout فرگمنت ها در رویداد OnCreateView تعریف می شود.

? رویداد on CreateView :

از این رویداد برای اتصال layout به فرگمنت استفاده می شود.

? رویداد on ViewCreated :

از این رویداد برای اتصال ویوها به کد جاوا ( findViewByID ) و تعریف listener های ویوها و ... استفاده می شود.

? رویداد on ActivityCreated :

این رویداد زمانی که رویداد on Create اکتیویتی میزبان فرگمنت به پایان برسد اجرا می شود.

? رویداد on Start :

این رویداد هم عملکردی مشابه عملکرد رویداد نظیر در اکتیویتی هاست.

? رویداد on Resume :

این رویداد هم عملکردی مشابه عملکرد رویداد نظیر در اکتیویتی هاست.

? رویداد on Stop :

این رویداد هم عملکردی مشابه عملکرد رویداد نظیر در اکتیویتی هاست.

? رویداد on DestroyView :

در این رویداد ویوهای فرگمنت Destory می شوند ولی فرگمنت همچنان موجود است.

? رویداد on Destroy :

در این رویداد فرگمنت Destory می شود.

? رویداد on DeAttach :

در این رویداد فرگمنت از اکتیویتی مربوطه جدا می شود.



برنامه نویسیبرنامه نویسی اندرویدlifecycleچرخه حیاتفرگمنت
linkedin.com/in/masoud-mahmoodzadeh
شاید از این پست‌ها خوشتان بیاید