给后台线程两个处理程序与不同的活动交谈?

时间:2016-02-18 06:25:00

标签: java android multithreading

我一周前开始使用Android,我有一个设计问题。

我有两个活动A和B.我目前正在活动A 。在活动A 中,我启动一个侦听网络消息的线程。在通过网络接收后台线程中的 start 后,我需要进入活动B

问题:我可以直接从后台线程中调用startActivity(B.class)吗?

如果没有,我想我使用Handler活动A 线程中调用startActivity(B.class)

问题:我的后台线程是否仍会继续执行活动A ,创建它的那个会被销毁,只要我注意没有死引用?

最后,我再次通过网络在后台线程中收到 停止 消息。现在我需要回到活动A (或其他一些活动)。

问题:我是否应该使用在 Activity B 中创建的新处理程序实例替换后台线程类中的处理程序实例?我估计当我启动它时,我必须将线程对象传递给 activity B 。我可能必须在切换处理程序实例时处理竞争条件。

所有这一切似乎都很复杂。是否有更优雅的方式来实现这一目标?服务?尺蠖?所有这些都是新的,工具/设计选择有点令人困惑。

1 个答案:

答案 0 :(得分:0)

如果您有多个活动,那么这不是理想的做法。 一旦Activity破坏了你的线程,虽然它在后台运行但没有更多的引用。使用单例类创建线程并将相应的处理程序注册到该类,您将能够通过这些处理程序轻松地与活动进行通信。