使用情景:
1.Activity中使用Dailog/DialogFragment,Dialog/DialogFragment只创建一次,下次直接复用显示
2.Dailog/DialogFragment存在延迟执行任务,延迟使用了View.postDelayed
现象描述:
我们在Dailog/DialogFragment关闭后,调用Dailog/DialogFragment的某个方法,该方法用到了View.postDelayed。结果就出现了View.postDelayed的调用没有执行,隔一段时间后重新调用打开弹窗,等待一会,View.postDelayed的调用执行了
根据现象猜测结果:
因为View.postDelayed是依赖View的绘制,由于弹窗关闭和Activity的依赖断开,导致不会刷新Dailog/DialogFragment的View,导致View.postDelayed暂停住了,重新打开弹窗后开始绘制View,View.postDelayed也重新开始执行
结论:
当在Dailog/DialogFragment需要延迟任务时,如果该弹窗需要复用,不要使用View.postDelayed去执行
网友评论