باگ در لیست ویو استاد !
سلام دوستان
امروز داشتم روی ListView ایی کار میکردم که مقادیرش توسط Preferences ها و لیستی از فایل های دانلود شده موجود درون فولدر برنامه ساخته میشه
که بعضی موقع باگ عجیبی رو در حین کار متوجه میشدم (افزایش تعداد ایتم های لیست ویو !) < که این باگ خیلی کم صورت میگرفت و کاملا بصورت اتفاقی روی میداد ! کمی عجیب بود ! <
از اونجایی که من وسواس دارم و تا دلیل چیزی رو ندونم ولش نمیکنم < کلی کلنجار رفتم و بلاخره متوجه شدم دلیل باگ چی هست <
اگر دقت کنید < طبق آموزش های استاد ما یک ArrayList داریم که آداپتر مربوط به لیست ویو با اون پر میشه و در واقع هر تعداد که Object درون این آرایه باشه به همون تعداد آیتم در لیست ویو دارید
public static ArrayList<StructValue> notes = new ArrayList<StructValue>();
هیچ جایی از آموزش های استاد ایراد نداره < اما این باگ در یک حالت روی میده :
اگر کاربر با استفاده از دکمه Back از Activity شما خارج بشه < در واقع Activity شما Destroy میشه اما Appication شما هنوز در حافظه Device فعال هست پس ArrayList که در بالا در کلاس G تعریف شده < هنوز با تمام متغیرها روی حافظه موجود هست
در همین حالت اگر کاربر برنامه رو از روی Icon مربوطه Launch کنه باعث میشه Activity شما OnCreate بشه و آرایه شما دوباره از اول مقدار دهی بشه و این باعث میشه ListView شما دوبرابر Item نشون بده <
برای جلوگیری از این باگ حتما دقت کنید < در Activity که مقادیر ArrayList مربوط به Adapter لیست ویو رو دارید ست میکنید ، توی همون Activity برای قسمت OnDestroy تمام ArrayList ها ر Clear() کنید (البته بستگی به برنامه شما م نحوه کد نویسی شما هم داره)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .