Pat*_*ric 5 performance android android-fragments bottomnavigationview
我有一个底部导航视图的设置。我加载的 3 个片段之一有一个带有另外 3 个片段的标签栏。我确实在底部导航点击时替换了这样的片段:
private void loadPage(int page)
{
if(fragmentManager == null)
fragmentManager = getSupportFragmentManager();
final FragmentTransaction transaction = fragmentManager.beginTransaction();
//transaction.setCustomAnimations(R.anim.fragment_fade_in, R.anim.fragment_fade_out, R.anim.fragment_fade_in, R.anim.fragment_fade_out);
//transaction.setCustomAnimations(R.anim.fragment_fade_in, R.anim.fragment_fade_out, R.anim.fragment_fade_in, R.anim.fragment_fade_out);
switch (page)
{
//Property
case TAB_PROPERTIES:
Fragment fragment = fragmentManager.findFragmentByTag("property");
if(fragment == null)
fragment = PropertyFragment.newInstance();
transaction.replace(R.id.rlMainContent, fragment,"property").addToBackStack("property").commit();
break;
//jobs
case TAB_JOBS:
fragment = fragmentManager.findFragmentByTag("jobs");
if(fragment == null)
fragment = JobsFragment.newInstance(null);
transaction.replace(R.id.rlMainContent, fragment,"jobs").addToBackStack("jobs").commit();
break;
//contacts
case TAB_CONTACTS:
fragment = fragmentManager.findFragmentByTag("contacts");
if(fragment == null)
fragment = PersonalContactsFragment.newInstance(false,true,false,true);
transaction.replace(R.id.rlMainContent, fragment,"contacts").addToBackStack("contacts").commit();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这些片段正确地从后台堆栈中检索出来,然后调用 onCreateView 和 onStart。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.activities_fragment, container, false);
mEmptyView = view.findViewById(R.id.empty_view);
mRecyclerView = (EmptyRecyclerView) view.findViewById(R.id.recycler_view);
mSwipeContainer = (SwipeRefreshLayout) view.findViewById(R.id.swipeContainer_OwnerRequest);
mProgressBar = (ProgressBar) view.findViewById(R.id.progressBar3);
if (!mFirstStartup)
mProgressBar.setVisibility(View.GONE);
return view;
}
@Override
public void onStart()
{
super.onStart();
if(mRecyclerView.getAdapter() == null)
{
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
mRecyclerView.setAdapter(mRecyclerAdapter);
mRecyclerView.addItemDecoration(mHeadersDecor);
mSwipeContainer.setOnRefreshListener(Refresh);
mSwipeContainer.setColorSchemeResources(R.color.colorPrimary, R.color.white);
}
}
Run Code Online (Sandbox Code Playgroud)
加载缓慢的片段在 pagerAdapter 中创建了上面的 3 个片段。不调用 setAdapter() 使其流畅,但当然不会渲染任何内容。我的 recyclerview 的布局是一个非常扁平的布局构建,带有 ConstraintsLayout。
有谁知道如何处理这样的情况?
我之前使用 pagerAdapter 并缓存了 bottomNavView 的所有 3 个片段,但我认为这是不好的做法,因为没有滑动手势,也不需要加载和缓存所有片段。
| 归档时间: |
|
| 查看次数: |
1469 次 |
| 最近记录: |