2016-07-07 73 views
0

我有一个活动和一个片段。 该片段启动一个持续3秒的线程,然后调用该活动的回调方法。Android - 线程和回调到活动

如果配置被改变(即方向改变),我的活动会被新的引用重新创建,但线程仍然有旧的引用,导致一团糟。

任何想法来解决这个问题?谢谢

回答

0

如何使用服务,而不是线程?

参考这里:

https://github.com/stephanenicolas/robospice/wiki/Starter-guide

,如果你想传达的线程之间的片段或活动。像监听器一样使用接口。例如,如果活动重新创建或更改,则通知线程,将侦听器更改为新活动。

+0

感谢您的意见,但事实是,我认为服务先进的组件,它可以是用于比这更先进的目的。线程是否确实对此不利? –

+0

也许是的。你可以搜索。 – hanbumpark

0

您可以使用AsyncTask而不是线程。在activity的onDestroy()方法中调用task.cancel()。

因此,如果已经调用了onDestroy()方法,您的活动将不会得到任何回调。

如果你坚持要用线程那么可能是你可以在你的回调方法添加这样的检查

if(getActivity() == null || getActivity().isFinishing()) 
    return; 
+0

问题是我需要执行回调方法,但由于我有这个问题,我必须将旧引用重定向到新引用......可能线程不适合用于此目的...... –

+0

查看新活动的任何方式这是重新创建将再次创建线程,所以你会得到回调。 –