我正在开发一款需要在后台进行大量计算的应用 为此,我从片段中启动一个线程并将一个Handler传递给它,这样它就可以传回消息。当发生配置更改(屏幕旋转,...)时,Android会重新创建活动和片段。我正在寻找一种从新片段中获取线程引用的方法,因此我可以将新的Handler传递给它。
保留整个片段对我来说不是一个选项,因为它在横向模式下使用不同的布局。
我无法使用onRetainNonConfigurationInstance(),因为只支持活动,但我的帖子存在于片段中。
我不能使用onSaveInstanceState(),因为它只支持原始数据类型。
在重新创建片段时,还有其他方法可以保留对后台线程的引用吗?
答案 0 :(得分:0)
我使用无头保留片段来解决问题,该片段管理线程。
我的普通片段创建了一个无头片段的新实例,该实例被保留。无头片段具有start()
和stop()
方法,这些方法反过来启动和停止线程以及setHandler()
方法,该方法更改处理程序消息传递给。
每当重新创建非保留片段时,它只需从FragmentManager中获取保留的片段,并使用新的Handler调用setHandler()
。
答案 1 :(得分:0)