حذف نشدن آیتم ها از ListView در ابتدای برنامه
با سلام خدمت استاد عزیز و تشکر از آموزش های عالیتون
در مورد این قسمت یه توضیحی در مورد اتفاق زیر بدید فکر می کنم برای همه بچه ها جالب باشه:
بعد از اجرای کد، اگر با BACK از برنامه خارج بشیم بعد دوباره اجراش کنیم، یه سری 10 تایی دیگه به آیتم ها اضافه میشه و حتی تغییراتی که روی آیتم های بالایی بدیم حفظ میشه، مگر اینکه برنامه Force Close کنیم که در اجرای بعدی درست عمل کنه.
حدس من اینه که اپلیکیشن بسته نمی شه شایل برنامه در حالت Empty Process میره و همینطور به خاطر وجود کلاس G و note که در اون تعریف شده ، آیتم ها حفظ میشن و اجرای دوباره add های بعدی رو در پی داره.
لطفا تصحیح بفرمایید حرف بنده رو و همینطور توضیحی در مورد نحوخ کنترل عملکرد کلید Back بدید.
آفرین، حدس شما کاملاً درست است. در اندروید برنامه ها بسته نمیشن بلکه minimize می شن و process اونها که همان نمونه گرفته شده از کلاس application هست، همیشه باز می مونه، مگر اینکه دستی بسته بشه. بنابراین اگر با کلید back از برنامه خارج بشید، در واقع برنامه minimize میشه. این منطق اندروید اصلاً قشنگ نیست و تأیید نمی کنم اما اینطوری هست دیگه. از اونجاییکه متغیر آرایه ما در کلاس G که Subclass ـی از Application هست قرار داره، با minimize شدن برنامه توسط کلید back همچنان این متغیر با محتویاتش در حافظه قرار داره و وقتی دوباره برنامه اجرا میشه، از همون process ادامه میده و باز آیتم به آیتم های قبلی اضافه میشه. اما وقتی پروسس به قول شما بصورت force close بسته میشه، این متغیرهای از حافظه خارج میشه و با اجرای مجدد ، مجدد ساخته میشه.
برای کنترل برنامه بصورت دقیقتر، راهکارهای متفاوت و زیادی وجود داره که چنین مشکلاتی رو برطرف کنیم، منتها چون کمی پیچیده هست، در مبحث های آینده بررسی خواهند شد. اما به عنوان یک راهکار زودگذر، می توانید یک کلاس StartupActivity ایجاد کنید که process از آن activity آغاز بشه، و متغیر های مورد نیاز reset بشن و بعد سریعاً به activity مورد نظرمون intent می زنیم و StartupActivity رو finish می کنیم.
مرسی از نکته سنجی شما و اینکه سئوال شما یکی از سئوالات زیبایی بود که تابحال پرسیده شده.
با سلام خدمت استاد گرامی
راستش من این قسمت از راه حل تون را نفهمیدم که گفتید :
"برای کنترل برنامه بصورت دقیقتر، راهکارهای متفاوت و زیادی وجود داره که چنین مشکلاتی رو برطرف کنیم، منتها چون کمی پیچیده هست، در مبحث های آینده بررسی خواهند شد. اما به عنوان یک راهکار زودگذر، می توانید یک کلاس StartupActivity ایجاد کنید که process از آن activity آغاز بشه، و متغیر های مورد نیاز reset بشن و بعد سریعاً به activity مورد نظرمون intent می زنیم و StartupActivity رو finish می کنیم."
میشه لطف کنید و بیشتر توضیح بدید که دقیقا باید چیکار کرد؟
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .