我有一个活动和一个片段。 这个片段启动一个持续3秒的线程,然后在活动上调用一个回调方法。
如果更改了配置(即方向已更改),我的活动将使用新引用重新创建,但该线程仍然具有旧引用,导致混乱。
有什么想法解决这个问题吗?感谢
答案 0 :(得分:0)
如何使用服务代替线程?
参考:
https://github.com/stephanenicolas/robospice/wiki/Starter-guide
如果要在线程之间传递片段或活动。使用像监听器这样的界面。例如,如果活动重新创建或更改某些内容,请通知线程,将侦听器更改为新活动。
答案 1 :(得分:0)
您可以使用AsyncTask而不是线程。在活动的onDestroy()方法中调用task.cancel()。
因此,如果已经调用onDestroy()方法,您的活动将无法获得任何回调。
如果您坚持使用线程,那么您可以在回调方法中添加这样的支票
if(getActivity() == null || getActivity().isFinishing())
return;