2016-08-30 40 views
5

我有两个片段甲& B.
我已切换从A使用以下代码来B:屏幕冻结时popBackStack()被调用

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进行数据库操作,屏幕也会冻结。
此外,当我按下返回按钮[​​]时,屏幕在从B切换回A之前冻结了几秒钟。
popBackStack动画效果不可见。
我试图显示不确定的进度条& imageview中的动画列表,但他们也冻结&它看起来好像他们是静态图像。

+1

检查您的FRAGMENT A是否在onCreateView/onViewCreated中具有任何阻止调用。 –

+0

发布您的AsyncTask。你可以通过增加延迟来看动画。 – Nepster

+0

在这两个片段中的所有方法中都会记录日志,并且您可以通过检查两个进程(在两个日志之间)进行很长时间检查的日志来找出问题,并且可以纠正原因(特别是在onResume或onPause中)如果可能粘贴代码。 –

回答

1

退房这篇文章剖析你的主线程:https://developer.android.com/studio/profile/traceview.html

这会告诉你什么是占用主线程,这可能是对冻结的原因。

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