نقل قول نوشته شده توسط nimaaamin مشاهده تاپیک
سلام دوستان
من ی اکتیویتی دارم که توش تعداد 120 تا 130 تا آبجکت گذاشتم(EditText,TextView,Spinner,TableLayout , ...)
وقتی میخوام این اکتیویتی رو باز کنم قدری زمان میبره تا فرم آماره استفاده بشه، یا مخصوصا وقتی کیبور باز میشه و دوباره میخوای ببندی محددا زمان میبره تا فرم آماده اسفاده بشه
ی راه کاری یا روشی که بتوان در وحله اول همه آبجکت ها لود نشه(مثلا 30 لود بشه) بعد تعداد بعدی و الی اخر
لطفا راهنمای
اگر همه این آبجکتها را درون یک لایه قرار داده باشید وقتی تو اکتیویتی این لایه را لود کنید همه ویجت ها را بارگذاری میکنه ! البته این کارهم که اصلا درست نیست و performance اکتیویتی بشدت پایین میاد.
میتونید از ویجتهای لیستی هست مثل recycler view که می تونید ویجت ها را با اولویت نمایش بدید و تکنیک های lazy loading هم استفاده کنید البته باید شرایط استفاده از این ویجت را هم داشته باشید
اگر تمام این ویجت ها به هم مرتبط هستند و از ویجتهای مختلف استفاده کرده باشید قاعدتا نمی تونید از این لیست ها استفاده کنید. یا بهتر بگم فرض کنید که یک فرم دارید که توی اون 30 تا تکست باکس دارید که باید اطلاعاتش را ذخیره کنید خوب بالطبع بهترین کا استفاده از یک لیست هست تا اینکه بخواهید همه این 30تا تکست ویو را تو یک لایه نمایش بدید پس نتیجه این که اگر همه ویجت ها یکسان هستند تکنیک خوبی هست در غیر اینصورت خیر.
به هر حال برای طراحی لایه ای که اینهمه ویجت داشته باشه بهتر هست که به چندین بخش تقسیم کنید و هر یک از بخشها را جداگانه نمایش بدید و در زمان نمایش هم لود کنید تا سربار هم کمتر بشه وگرنه همونطوری که عرض کردم از نظر تکنیکی هم کار درستی نیست اینهمه ویجت را بر روی یک اکتیویتی نمایش بدید! تا اونجاهم که یادم هست خود اندروید استودیو بهتون هشدار میده که تعداد ویجت ها خیلی زیاد هست فکر کنم سقف ویجت هایی که تو یک لایه میتونید نمایش بدید 80 بود.