آموزش بهینه سازی recyclerview در اندروید

امتیاز 4.50 ( 2 رای )

سلام دوستان عزیز در این سری از آموزش برنامه نویسی اندروید به آموزش بهینه سازی recyclerview در اندروید می پردازیم یکی از مشکلاتی که ریسایکلر ویو در برنامه نویسی اندروید دارد حساس بودن لیست تعریف شده در Item های مربوط recyclerview است و اگر در هنگام نوشتن این بخش کمی اشتباه کنید در اصطاح recyclerview شما لگی یا کند خواهد شد در ادامه با ما همراه باشید تا از این آموزش استفاده کنید.
با دنبال کردن این آموزش می توانید مشکلات زیر را حل کنید

  • علت لگ در ریسایکر ویو
  • مشکل کند بودن recyclerview (ریسایکلر ویو)
  • لگ زدن recyclerview
  • کند بودن ریسایکر ویو
  • کندی در scroll کردن در ریسایکلر ویو
  • مشکل اسکرول در لیست بزرگ ریسایکلر ویو
  • لودینگ طولانی در اسکرول لیست infinity
  • علت کتدی در ریسایکر ویو

دلایل مختلفی باعث کندی recyclerview (ریسایکلر ویو ) می شود برای اینکه از این کندی جلوگیری کنید نکتات زیر را حتما به یاد داشته باشید.
نکته اول : حتما layout خود را برپایه ی constraintlayout طراحی کنید استفاده از این لایه باعث می شود view شما سنگین نشود یا حتما view هایی که در یک لایه یا یک root قرار میگرند خیلی complex نباشند به عنوان مثال بیشتر از 10 تا linearlayout در یک item وجود نداشته باشد.
سعنی کنید تعداد child های یک item ییش از 10 تا نشود.
در هنگام لودینگ عکس حتما از کتاب خانه هایی مثل glide , picasso  استفاده کنید.
عکس را قبل از تنظیم در imagview فشرده سپس قرار دهید.
حالت Caching را برای لیست recyclerview (ریسایکلر ویو ) فعال کنید.
در ادامه به برخی از کدهای کاربردی در رابطه با بهینه سازی recyclerview (ریسایکلر ویو ) می پردازیم.
حتما از ویژگی های زیر برای recyclerview  استفاده کنید.

نکته حائز اهمیت در خط اول است در صورتی از خط اول کد بالا استفاده کنید که view شما اندازه اش تغییر نمی کند. مابفی کد به منظور کشینگ استفاده می شود

زمانی که یک آیتم را حذف یا درج می کنید سعی کنید از notifyDataSetChanged استفاده نکنید زیرا تمامی لیست را رفرش می کند سعی کنید در یک رینج خاص عمل درج یا حذف را انجام دهید همانند کدهای بالا
onBindViewHolder  باید خیلی Cheap و کم کد باشد اگر مقدار کد زیادی در آن قرار گیرد recyclerview لگ خواهد داشت سعی کنید رویدادی مثل ClickListener را در onCreateViewHolder قرار دهید تا فقط یکبار ایجاد شود.
از ابزار diffutil که مربوط به recyclerview است استفاده کنید در یک اموزش جداگانه diffutil را توضیح خواهیم داد از حوصله این مطلب خارج است.
از کد زیر به منظور لیست یا آیدی یکتا استفاده کنید.

همانطور که گفتیم بهتر است عکس را فشرده و resize کنیم (مثلا شما یک عکس دارید در ابعاد 500*500 اگر همچین عکسی در Imageview قرار بگیرد بافر مربوط به ریسایکر ویو باید به سختی آن را لود و لیست را لگی می کند بهترین گزینه کاهش اندازه عکس با کد و سپس set کردن آن است)

عکس را حتما با کتد زیر فشرده کنید.

موفق و پیروز باشید.
 
 

مطالعه بیشتر