片段:onPause()后getActivity()为null

时间:2015-04-15 19:29:45

标签: android android-fragments

我有几个由活动托管的片段。它们注册从onResume()中的自定义Application类调用的侦听器,并在onPause()中取消注册它们。 活动有时会使用fragmentTransition.replace(...)

来交换片段

在侦听器中调用的有时(非常罕见)getActivity()返回null。 怎么可能?不应该调用监听器,因为他应该首先取消注册?

要强制执行此操作,您可以安装my app并单击封面(对新片段调用replace)并同时转动设备(运行时更改)。

1 个答案:

答案 0 :(得分:0)

感谢您的贡献。我解决了这个问题。这是由非常罕见的竞争条件造成的。我正确地锁定了访问器,但是当我使用处理程序发布到ui线程时,我认为有些错误。这有一个非常小的延迟,导致竞争条件失败。

我通过使用getActivity()。runOnUiThread(...)来修复它,而没有延迟。 很抱歉打扰这个非常具体的问题。