我有几个由活动托管的片段。它们注册从onResume()
中的自定义Application类调用的侦听器,并在onPause()
中取消注册它们。
活动有时会使用fragmentTransition.replace(...)
在侦听器中调用的有时(非常罕见)getActivity()
返回null。
怎么可能?不应该调用监听器,因为他应该首先取消注册?
要强制执行此操作,您可以安装my app并单击封面(对新片段调用replace)并同时转动设备(运行时更改)。
答案 0 :(得分:0)
感谢您的贡献。我解决了这个问题。这是由非常罕见的竞争条件造成的。我正确地锁定了访问器,但是当我使用处理程序发布到ui线程时,我认为有些错误。这有一个非常小的延迟,导致竞争条件失败。
我通过使用getActivity()。runOnUiThread(...)来修复它,而没有延迟。 很抱歉打扰这个非常具体的问题。