آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تفاوت onCreate کلاس G با onCreate مربوط به Activity ها ؟

Reza  10 سال پیش  10 سال پیش
0 0

سلام

    من در آموزش 14 یه چیزی متوجه شدم ، نمیدونم درسته یا نه ! استاد در آموزش 14 ( DataBase ) فرمودند : اگر پروژه را پس از اجرا ، مجددا بدون تغییر دادن آن اجرا کنیم اشتباه است ، و فرمودند دلیلش اینه که چون برنامه روی حافظه مستقر هست و باید پروسس بسته بشه ، یعنی یه حرف تایپ کنیم بعد پاکش کنیم و حالا save و اجرا کنیم .

    سوال ) من یه برنامه رو اجرا کردم و متد onCreate کلاس G و سپس onCreate کلاس اصلی اجرا شد . بعد برنامه رو بستم و بدون تغییر دوباره اجرا کردم و فقط onCreate کلاس اصلی اجرا شد . آیا دلیل این اتفاق که کلاس G دیگه اجرا نشد اینه که :

    همون مفهوم چرخه حیات که برای  Activity وجود داره برای کلاس Application هم وجود داره ؟؟؟ یعنی میتونیم بگیم کلاس G چون از Application ارث میبره و Application هم تغییر نکرده پس متد onCreate کلاس G دوباره اجرا نمیشه مگر اینکه مثل Activity ها اونو از بین ببریم ، که برای Application میشه تغییر دادن فایل یا همون Application .

درسته ؟

اگه اشتباهه پس دلیل اتفاق بالا چیه ؟

ممنون .

0 0
در مورد حرف استاد باید بگم که اگه شما بدون تغییر دوباره f5 بزنید ارور میده و میگه برنامه در حال اجرا هست و دو تا راه هست,یا باید یه تغییری ایجاد کنید و دوباره اجرا کنید(تغییر در حد یه اسپیس زدن و پاک کردنش!)و یا توی emulator دکمه ی back رو بزنین (10 سال پیش)
0 0
درسته میدونم . ببینید 2 تا موضوعه : یکی اینکه باید برنامه رو ببندیم تا activity رو destroy کنیم ، و الا برنامه اجرا نمیشه . موضوع دیگه که سوال من هست اینه که حالا برنامه رو بستیم و دوباره f5 زدیم و برنامه هم اجرا میشه ، ولی این دفعه onCreate کلاس G دیگه اجرا نمیشه و فقط onCreate کلاس اصلی اجرا میشه مگه اینکه علاوه بر بستن برنامه که همیشه اینکار رو میکنیم ، یه تغییر تو برنامه بدیم که دوباره سیو بشه . دلیل اینو میخوام بدونم ؟ (10 سال پیش)
0 0
احتملا کلاس G را در منیفست معرفی نکردید . (10 سال پیش)
0 0
چرا معرفی کردم ، پروژه database استاد رو ایمپورت کردم . برنامه هم اجرا میشه . ولی با آزمایشی که انجام دادم فهمیدم اگه تغییر ایجاد نکنیم کلاس G دوباره اجرا نمیشه ، مگه تغییرش بدید . میتونید با Log تست کنید . (10 سال پیش)
0 0
منظورتون از دوباره اجرا شدن چیه ؟ کلاس Application یکبار موقع اجرای برنامه متد onCreate رو صدا میزنه . (10 سال پیش)
0 0
نه اگه بعد از یک اجرا ، بدون تغییر دوباره f5 بزنید دیگه اجرا نمیشه ، فقط onCreate مربوط به Activity ها اجرا میشه ، شما در onCreate کلاس G اگه Log بذارید متوجه میشید (10 سال پیش)
0 0
یعنی اگه شما در تمام onCreate ها از جمله کلاس G دستور Log بنویسید ، بعد از اولین اجرا همه Log ها چاپ میشن ولی اگه دوباره برنامه رو اجرا کنی ، همه به غیر از Log کلاس G چاپ میشه مگه اینکه به قول استاد یه حرف تایپ کنی بعد پاکش کنی و بعد دوباره اجرا کنی ، اونوقت تمام Log ها از جمله Log کلاس G هم چاپ میشه (10 سال پیش)
0 0
منظورم از دوباره اجرا کردن اینه که برنامه رو در Emulator ببندیم و بلافاصله دوباره f5 بزنیم (10 سال پیش)
0 0
به خاطر این هست که Activity شما Destroy شده ولی هنوز پروسس اپلیکیشن بسته نشده و در حال کار هست . (10 سال پیش)
+2 0
ببخشید زیاد سوال پرسیدم و ممنون از وقتی که میذارید ، ولی با جوابی که دادید یه سوال دیگه برام پیش اومد : خب کاربر از هر برنامه ای که میاد بیرون ، درسته Activity رو Destroy میکنه و تمام . ولی دیگه پروسس اپلیکیشن رو که نمیتونه ببنده که !!! ( اگه میشه چطوریه ؟ ) پس برای بار دوم که وارد برنامه میشه کلاس G اجرا نمیشه ! پس نباید هیچ کد اجرایی در G قرار بدیم ( به قول استاد فقط تنظیمات برنامه رو قرار بدیم که نیاز داره یک بار برای همیشه اجرا بشه ) . پس چرا در پروژه DataBase ( بخش 14 ) استاد کدهای DataBase رو در کلاس G نوشتن ؟! ایرادش اینه که مثلا اگه فایل sqlite یا پوشه اون ، عمدا یا سهوا توسط کاربر از کارت حافظه پاک بشه برنامه دیگه درست کار نمیکنه ، کلاس G هم که دیگه اجرا نمیشه که اگه فایل وجود نداشت دوباره بسازه ! پس بهتر نبود که استاد در Activity اصلی برنامه کدها رو قرار میدادن ؟ (10 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .