调用 popBackStack() 时屏幕冻结

Screen freezes when popBackStack() is called

我有两个片段 A 和 B。
我已使用以下代码从 A 切换到 B:

    FragmentManager fragmentManager;
    FragmentTransaction transaction;
    fragmentManager = getActivity().getFragmentManager();
    transaction = fragmentManager.beginTransaction();
    transaction.setCustomAnimations(R.animator.enter_anim, R.animator.exit_anim,R.animator.popenter, R.animator.popexit);
    transaction.replace(R.id.fragmentLayout, new B())
            .addToBackStack("tag").commit();

B 包含 SQLite 操作 (SugarORM)。
从 A 切换到 B 时,屏幕冻结,即使我正在使用 AsyncTask & IntentService 进行数据库操作。
此外,当我按下后退按钮 [getFragmentManager().popBackStack();] 时,屏幕会冻结几秒钟,然后从 B 切换回 A。
popBackStack动画太不可见了。
我尝试在 imageview 中显示不确定的进度条和动画列表,但它们也冻结了并且看起来好像是静态图像。

查看这篇关于分析主线程的文章:https://developer.android.com/studio/profile/traceview.html

这将向您展示什么正在占用主线程,这可能是冻结的原因。

另外,按照@NishantPardamwar 的建议检查片段的生命周期方法,运行 在主线程上,这很可能是罪魁祸首。