Android应用重启活动 - 网络IO正在进行中会发生什么?

时间:2013-02-18 20:53:16

标签: android networking android-activity

如果我调用外部Web服务并且用户旋转设备,则Activity将重新启动(我知道您可以自己处理它,但不建议这样做)。我知道我可以使用onRetainNonConfigurationInstance()保留状态。

我遇到的问题是活动重启后飞行网络IO会发生什么?是继续,是暂停还是被杀?

我对Android(iOS人员)比较陌生,所以重启的Activity很奇怪。

我们制作的一些网络电话可以重新启动,但是购买商品不是其中之一。我如何处理这个以便购买仍然正常?假设我会使用Asynctask(虽然我意识到还有其他选择,例如Executors)。

2 个答案:

答案 0 :(得分:1)

对于需要跨活动重启(例如购买)维护的网络电话,请考虑使用service而不是在活动中进行此操作。

如果你的连接被定义为活动中的实例变量,它将在活动重启时被销毁/杀死。

另一种选择,但我不建议,是实现一个application类并保持你的连接,只要你的应用程序进程存活,它就会持久化。

答案 1 :(得分:0)

您不应该处理活动内部的请求,除非它们足够简单(即不需要响应)。常见用例是您要与要在多个活动中处理的REST接口进行交互。基本思想是向服务发出请求并让它为您调解连接。 Google IO 2010有一个很好的lecture,你可以听。

不建议在Application类中实现功能,因为当内存紧张时,Android会杀死您的应用时会出现奇怪的行为。