Долго загружаются тяжелые фрагменты

233
24 мая 2018, 10:20

Что имею?

У меня есть активность - MainActivity, которая служит контейнером для 5 фрагментов.

Переключение фрагментов идет по нажатию на BottomNavigationView, вот так - (Объекты фрагментов были инициализированы в методе OnCreate() и вынесены в поля класса)

 @Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    if(item.getItemId() != view.getSelectedItemId()) {
        fragmentTransaction = getSupportFragmentManager().beginTransaction();
        if (menuItems.indexOf(item.getItemId()) > menuItems.indexOf(view.getSelectedItemId())) {
            fragmentTransaction.setCustomAnimations(R.animator.fragment_slide_left_anim, R.animator.fragment_slide_right_anim);
        } else {
            fragmentTransaction.setCustomAnimations(R.animator.fragment_slide_right_exit_anim, R.animator.fragment_slide_left_exit_anim);
        }
        switch (item.getItemId()) {
            case R.id.action_contacts:
                fragmentTransaction.replace(R.id.main_fragment_container, contactsFragment);
                break;
            case R.id.action_cloud:
                fragmentTransaction.replace(R.id.main_fragment_container, cloudFragment);
                break;
            case R.id.action_messages:
                fragmentTransaction.replace(R.id.main_fragment_container, messagesFragment);
                break;
            case R.id.action_profile:
                fragmentTransaction.replace(R.id.main_fragment_container, profileFragment);
                break;
            case R.id.action_settings:
                fragmentTransaction.replace(R.id.main_fragment_container, settingsFragment);
                break;
        }
        fragmentTransaction.commitAllowingStateLoss();
    }
    return true;
}

А вот например один из фрагментов (Этот фрагмент содержит еще в себе два фрагмента в виде TabLayout)

public class ProfileFragment extends MvpAppCompatFragment implements ProfileFView {
private MainActivity activity;
@BindView(R.id.tabs)
TabLayout tabLayout;
@BindView(R.id.viewpager)
ViewPager viewPager;
private InfoProfileFragment infoProfileFragment;
private DecorationsProfileFragment decorationsProfileFragment;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.fragment_profile, null);
    ButterKnife.bind(this, view);
    activity = (MainActivity) getActivity();
    infoProfileFragment = new InfoProfileFragment();
    decorationsProfileFragment = new DecorationsProfileFragment();
    setupViewPager(viewPager);
    tabLayout.setupWithViewPager(viewPager);
    return view;
}
private void setupViewPager(ViewPager viewPager){
    TwoTabsViewPagerAdapter adapter = new TwoTabsViewPagerAdapter(getChildFragmentManager());
    adapter.addFragment(infoProfileFragment, "Информация");
    adapter.addFragment(decorationsProfileFragment, "Украшения");
    viewPager.setAdapter(adapter);
}
@Override
public void showMessage(String message) {
    Snackbar.make(activity.layout, message, Snackbar.LENGTH_LONG).show();
}

}

А есть практически пустые фрагменты, где только один TextView.

Проблема

Загрузка пустых фрагментов происходит достаточно быстро, но вот более тяжелые фргаменты, для них занимает примерно полсекунды, чтобы показаться на экране. Это ощутимо влияет на UX.

В статических переменных я не храню контекст, так что утечки в данном случае быть не может.

Возможно ли это как-нибудь исправить (улучшить), либо придется смириться, что тяжелые фрагменты будут дольше загружаться?

Заранее спасибо!

READ ALSO
Функция записи значения в файл [закрыт]

Функция записи значения в файл [закрыт]

Нужно написать функцию saveToFile(String filename, String str) которая должна записать в файл с значениемаргумента filename значение аргумента str Для записи нужно...

239
Вывод полученного ответа [требует правки]

Вывод полученного ответа [требует правки]

Имеется вот такой кодЦель: получить ответ и вывести на экран

202
Уменьшение значения атрибута colspan, при сокрытии столбцов в таблице HTML

Уменьшение значения атрибута colspan, при сокрытии столбцов в таблице HTML

Используя @media в CSS стилях для дисплеев с маленьким разрешением, скрываю полностью "Скрываемый столбец 1", используя стили

240
Подбор цвета в html

Подбор цвета в html

Всем приветПомогите разобраться с цветами в HTML

248