【发布时间】:2016-08-30 09:59:16
【问题描述】:
我有两个片段 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 中显示不确定的进度条和动画列表,但它们也冻结了,看起来好像是静态图像。
【问题讨论】:
-
检查您的 FRAGMENT A 是否在 onCreateView/onViewCreated 中有任何 ui 阻塞调用。
-
发布您的 AsyncTask。并且你可以通过增加延迟来看到动画。
-
把你所有方法中的日志放在两个片段中,你可以通过查看日志找出两个进程(其中2个日志之间)花费了这么长时间,你可以纠正原因。(特别是在onResume 或 onPause)如果可能,粘贴代码。
标签: android fragment freeze fragment-backstack