我一周前开始使用Android,我有一个设计问题。
我有两个活动A和B.我目前正在活动A 。在活动A 中,我启动一个侦听网络消息的线程。在通过网络接收后台线程中的 start 后,我需要进入活动B 。
问题:我可以直接从后台线程中调用startActivity(B.class)
吗?
如果没有,我想我使用Handler
从活动A 线程中调用startActivity(B.class)
。
问题:我的后台线程是否仍会继续执行活动A ,创建它的那个会被销毁,只要我注意没有死引用?
最后,我再次通过网络在后台线程中收到 停止 消息。现在我需要回到活动A (或其他一些活动)。
问题:我是否应该使用在 Activity B 中创建的新处理程序实例替换后台线程类中的处理程序实例?我估计当我启动它时,我必须将线程对象传递给 activity B 。我可能必须在切换处理程序实例时处理竞争条件。
所有这一切似乎都很复杂。是否有更优雅的方式来实现这一目标?服务?尺蠖?所有这些都是新的,工具/设计选择有点令人困惑。
答案 0 :(得分:0)
如果您有多个活动,那么这不是理想的做法。 一旦Activity破坏了你的线程,虽然它在后台运行但没有更多的引用。使用单例类创建线程并将相应的处理程序注册到该类,您将能够通过这些处理程序轻松地与活动进行通信。