۲ پژمان آزاد
درباره متد onActivityCreate()
Pouya Rezaei حل شده توسط Pouya Rezaei

با درود 

 

مطابق آموزش، چهارمین متدی که درون فرگمنت کال میشه onActivityCreate() هست و زمانی صدا زده میشه که، متد onCreate() داخل Activity یه مقداری رو برگردونه یا return بکنه. سئوال:

خروجی متد onCreate() درون اکتیوتی که void هست!!! چیزی برنمیگردونه که.

سلام دوست من.

همونطور که میدونیم متد onCreate زمانی صدا زده میشه که اکتیوتی داره ساخته میشه و حالت اون به Created تغییر میکنه.

متد onActivityCreated در فرگمنت زمانی صدا زده میشه که اکتیویتی میزبان اون فرگمنت کاملا ساخته شده و در حالت Created هست.

منظور استاد هم همین بوده.

اما نمیشه به این متد تکیه کرد تا بفهمی چه زمانی متد onCreate اکتیویتی کال میشه چون ممکنه خیلی بیشتر از متد onCreate صدا زده بشه.

بهترین پاسخ
Pouya Rezaei ۲۹ تیر ۱۳۹۹، ۱۹:۴۶

سلام پژمان جان

 

چون این سوال بسیار مهم میومد دلم نیومد رد شم و منبعی که خودم باهاش مسلط شده بودم رو توضیح ندم

این سوال چرخه ها بسیار بسیار مهم هست چرا که در اکثر مصاحبه‌ها سوال میشه

پس من شما رو ارجاع میدم به دو مقاله که بسیار خوب توضیح دادن و تا بیشتر به ویدیو مسلط بشی.

پس این دو تا مقاله که من ازشون استفاده کردم و واقعا خوب نوشته شدن رو بخون

متن زیر همون مقاله هست که چند کلمه ای ویرایش کردم ولی در انتها منبع را گذاشتم

---------------------------------------------------------

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

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‌های ویوها و ... استفاده می‌شود.که در اینجا میتوانیم با getView() ویو هایمان را findView کنیم

 

? رویداد on ActivityCreated :

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

 

? رویداد on Start :

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

? رویداد on Resume :

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

? رویداد on Stop :

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

? رویداد on DestroyView :

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

? رویداد on Destroy :

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

? رویداد on DeAttach :

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

منبع :

https://virgool.io/@۱masoud۱/lifecycle-fragment-android-naohzgkovv۵u

پیشنهاد میکنم این مورد رو هم مطالعه بفرمایی:درباره اکتیویتی ها:

https://virgool.io/@۱masoud۱/lifecycle-activity-android-uc۱qr۳ysazud

ارادتمند.

پوریا شفیعی ۲۹ تیر ۱۳۹۹، ۲۰:۳۷