رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
savedInstanceState (حل شد)
#1
سلام خسته نباشید روش کار با این متد چطوره؟
من فرگمنت هام رو این جوری فراخونی میکنم:
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
           public boolean onNavigationItemSelected(@NonNull MenuItem item) {
               switch (item.getItemId()) {
                   case R.id.menu_search:
                       fragment = new SearchFragment();
                       break;
                   case R.id.menu_login:
                       fragment = new LoginFragment();
                       break;
                   case R.id.menu_home:
                       fragment = new HomeFragment();
                       break;
                   case R.id.menu_cat:
                       fragment = new CatFragment();
                       break;
               }
               transaction = fragmentManager.beginTransaction();
               transaction.replace(R.id.main_container, fragment).commit();
               return true;
           }
       });
که توی HomeFragment یه RecyclerView دارم.
تویه کلاس HomeFragment توی متد onCreateView اطلاعات RecyclerView رو از سرور میگیرم و نمایش میدم.
من میخام وقتی فرگمت تغییر داده شد مثلا به CatFragment و وقتی دوباره برگشت به فرگمنت HomeFragment دیگه اطلاعات رو از سرور نگیره همون اطلاعات قبلی رو لود کنه.
من اومدم اطلاعات رو توی کلاس App سیو کردم که باعث شده مصرف رم من زیاد بشه.
اگه راه بهتری هستش لطفا راهنماییم کنید.
با سرچ به یه متد دیگه برخوردم onSaveInstanceState که هر کاری میکنم اجرا نمیشه اصلا!
پاسخ
تشکر شده توسط:
#2
اگه هدف شما فقط همین موضوعه کافیه که تعداد صفحات fragmentManager رو بیشتر کنین (offScreenPageLimit). مثلاً وقتی روی 1 باشه، توی هر سربرگی باشین یکی قبل و یکی بعدش رو Cache میکنه و از حافظه خارج نمیکنه. حداقل عدد مجاز براش 1 هست ولی میتونین بیشتر بگذارین. مثلاً اگه روی 4 باشه و شما کلاً 5 فرگمنت داشته باشین که با Tab جدا کردین، توی هرکدوم که باشین هیچکدوم از فرگمنتهای دیگه از حافظه خارج نمیشن.
پاسخ
تشکر شده توسط: balutsoft
#3
private FragmentManager fragmentManager;
متدی به اسم offScreenPageLimit وجود نداره!
پاسخ
تشکر شده توسط:
#4
متد نیست. یه اتریبیوته که توی XML باید ست کنید. متدش به اسم setOffScreenPageLimit هست.
پاسخ
تشکر شده توسط: balutsoft
#5
با سلام مشکل حل شد.
من از FrameLayout استفاده میکردم برای همین به مشکل خورده بودم چون اینجا ریپلیس میکردم که حالا احتمالا روش های خودشم داره که کش بشه ولی من نتونستم این کار رو انجام بدم اومدم از ViewPager استفاده کردم و خودش کش میکنه.
تشکر از استاد شهرکی.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 3 مهمان