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

حذف نشدن آیتم ها از ListView در ابتدای برنامه

MJ  12 سال پیش  12 سال پیش
0 0

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


در مورد این قسمت یه توضیحی در مورد اتفاق زیر بدید فکر می کنم برای همه بچه ها جالب باشه:
بعد از اجرای کد، اگر با BACK از برنامه خارج بشیم بعد دوباره اجراش کنیم، یه سری 10 تایی دیگه به آیتم ها اضافه میشه و حتی تغییراتی که روی آیتم های بالایی بدیم حفظ میشه، مگر اینکه برنامه Force Close کنیم که در اجرای بعدی درست عمل کنه.
حدس من اینه که اپلیکیشن بسته نمی شه شایل برنامه در حالت Empty Process میره و همینطور به خاطر وجود کلاس G و note که در اون تعریف شده ، آیتم ها حفظ میشن و اجرای دوباره add های بعدی رو در پی داره.
لطفا تصحیح بفرمایید حرف بنده رو و همینطور توضیحی در مورد نحوخ کنترل عملکرد کلید Back بدید.

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
uncocoder  12 سال پیش
+1 0

خواهش می کنم.
آفرین، حدس شما کاملاً درست است. در اندروید برنامه ها بسته نمیشن بلکه minimize می شن و process اونها که همان نمونه گرفته شده از کلاس application هست، همیشه باز می مونه، مگر اینکه دستی بسته بشه. بنابراین اگر با کلید back از برنامه خارج بشید، در واقع برنامه minimize میشه. این منطق اندروید اصلاً قشنگ نیست و تأیید نمی کنم اما اینطوری هست دیگه. از اونجاییکه متغیر آرایه ما در کلاس G که Subclass ـی از Application هست قرار داره، با minimize شدن برنامه توسط کلید back همچنان این متغیر با محتویاتش در حافظه قرار داره و وقتی دوباره برنامه اجرا میشه، از همون process ادامه میده و باز آیتم به آیتم های قبلی اضافه میشه. اما وقتی پروسس به قول شما بصورت force close بسته میشه، این متغیرهای از حافظه خارج میشه و با اجرای مجدد ، مجدد ساخته میشه.

برای کنترل برنامه بصورت دقیقتر، راهکارهای متفاوت و زیادی وجود داره که چنین مشکلاتی رو برطرف کنیم، منتها چون کمی پیچیده هست، در مبحث های آینده بررسی خواهند شد. اما به عنوان یک راهکار زودگذر، می توانید یک کلاس StartupActivity ایجاد کنید که process از آن activity آغاز بشه، و متغیر های مورد نیاز reset بشن و بعد سریعاً به activity مورد نظرمون intent می زنیم و StartupActivity رو finish می کنیم.

مرسی از نکته سنجی شما و اینکه سئوال شما یکی از سئوالات زیبایی بود که تابحال پرسیده شده.
پاسخ به سوال 
Morteza  12 سال پیش
0 0

با سلام خدمت استاد گرامی

راستش من این قسمت از راه حل تون را نفهمیدم  که گفتید :

"برای کنترل برنامه بصورت دقیقتر، راهکارهای متفاوت و زیادی وجود داره که چنین مشکلاتی رو برطرف کنیم، منتها چون کمی پیچیده هست، در مبحث های آینده بررسی خواهند شد. اما به عنوان یک راهکار زودگذر، می توانید یک کلاس StartupActivity ایجاد کنید که process از آن activity آغاز بشه، و متغیر های مورد نیاز reset بشن و بعد سریعاً به activity مورد نظرمون intent می زنیم و StartupActivity رو finish می کنیم."

میشه لطف کنید و بیشتر توضیح بدید که دقیقا باید چیکار کرد؟

+1 0
متأسفانه شاید نشه به صورت متنی کمک بهتری کرد چون پیچیده هست. شاید بهتر باشه به عنوان یک بخش آموزش و پروژه کاربردی به قضیه نگاه کنم و یک آموزش تدوین کنم که به این زودی ها نمیشه. به همین دلیل از ابتکار خودتون استفاده کنید و روش های مختلف رو تست کنید، به این ترتیب به الگوهای قشنگی می رسید و لذت می برید. (12 سال پیش)
0 0
با تشکر از شما....پس لطف کنید در وقت مناسب این آموزش را تدوین کنید،چون لیست ویو ها خیلی پر استفاده هستند و این مشکل چیزی نیست که بشه ازش گذشت (12 سال پیش)

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