如果我有DialogFragment
保留且不可取消,在什么情况下getActivity()会返回null?
据我了解,可以销毁活动的唯一方法是:
我的问题是,我错过了一个案例吗?或者我的假设不正确?
答案 0 :(得分:0)
不完全是你的问题的答案,但是当在DialogFragment中使用Handler时,我有一个getActivity()返回null。即使Handler有一个指向DialogFragment实例的链接,它仍然在handleMessage()方法中将getActivity()设置为null。很高兴听到为什么会这样。
P.S。更奇怪的是,第一次创建这个DialogFragment一切都很好。当我们创建这个DialogFragment的新实例时,他在Handler中的getActivity()开始返回null。
我怀疑,当我们创建一个新的DialogFragment时,Handler里面仍然会附加到旧的(已经分离并且没有活动)
必须承认,我的处理程序不是推荐的静态。
P.P.S我使用compat lib作为片段
答案 1 :(得分:0)
确定。在考虑之后,我想我理解了我的错误。来自第一个DialogFragment的处理程序已在我的服务中注册,并且从未取消注册。因此,当消息出现时,它也会进入此处理程序。我相信它可能会导致内存泄漏,如果还没有:D