有关Glide源码中的RequestManagerRetriever类里面成员变量pendingRequestManagerFragments的作用

一个昵称而已T 2017-09-08 10:28:41
在Glide的with()方法中,分析源码时有在RequestManagerRetriever的getRequestManagerFragment()方法中有涉及这样一段代码

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
RequestManagerFragment getRequestManagerFragment(final android.app.FragmentManager fm) {
RequestManagerFragment current = (RequestManagerFragment) fm.findFragmentByTag(FRAGMENT_TAG);
if (current == null) {
current = pendingRequestManagerFragments.get(fm);
if (current == null) {
current = new RequestManagerFragment();
pendingRequestManagerFragments.put(fm, current);
fm.beginTransaction().add(current, FRAGMENT_TAG).commitAllowingStateLoss();
handler.obtainMessage(ID_REMOVE_FRAGMENT_MANAGER, fm).sendToTarget();
}
}
return current;
}

我想问问有没有人知道,为什么先通过pendingRequestManagerFragments.put(fm, current);之后在fm.beginTransaction().add(current, FRAGMENT_TAG).commitAllowingStateLoss();后又执行handler.obtainMessage(ID_REMOVE_FRAGMENT_MANAGER, fm).sendToTarget();将新new的RequestManagerFragment实例给移除

为什么不直接执行fm.beginTransaction().add(current, FRAGMENT_TAG).commitAllowingStateLoss();或者直接移除RequestManagerFragment实例而不通过handler
...全文
221 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧