Android 在web服务调用过程中旋转方向

Android 在web服务调用过程中旋转方向,android,orientation,android-asynctask,Android,Orientation,Android Asynctask,我有一个ListActivity,它实例化一个AsyncTask,调用一个web服务,并用结果填充ListView 在AsyncTask仍在运行时,如何处理设备旋转?我是否应该取消它,保存我需要的任何数据,并在重新创建ListActivity时启动一个新的数据?Android是否已经处理了这种情况?这里您需要的似乎是一种服务,而不是异步任务——因为您正在运行一个长查询,该查询应该以相同的方式持久化并交付结果,而不管方向如何 顺便说一句,终止Asynctask并不简单——最好不要去那里,而是让服务

我有一个ListActivity,它实例化一个AsyncTask,调用一个web服务,并用结果填充ListView


在AsyncTask仍在运行时,如何处理设备旋转?我是否应该取消它,保存我需要的任何数据,并在重新创建ListActivity时启动一个新的数据?Android是否已经处理了这种情况?

这里您需要的似乎是一种服务,而不是异步任务——因为您正在运行一个长查询,该查询应该以相同的方式持久化并交付结果,而不管方向如何


顺便说一句,终止Asynctask并不简单——最好不要去那里,而是让服务真正在后台运行。

您是否要求更改方向时重新创建ListActivity?我希望您的用户不会希望这样,而是希望继续填充ListView

我有一个应用程序,它在一系列异步任务中执行一系列HTTP GET和POST,而无需在每次方向更改时重新启动活动。您所需要的只是清单中类似于以下内容的行

android:configChanges="orientation"

请参阅文档,该文档位于

Torid关于覆盖配置更改处理程序的建议在大多数情况下都有效。然而,我发现一些制造商的设备仍然会重新创建该活动,即使您已经这样做了(到目前为止,我已经看到了一款HTC手机)

正确的解决方案是Commonware在以下链接中的答案:


我以前试过,但它有一个主要缺陷。我使用BroadcastReceiver通知ListActivity查询已完成,并将数据传递给ListActivity。但是,在onPause()期间,BroadcastReceiver被取消注册,这意味着如果用户启动另一个应用程序或我的应用程序在查询过程中被中断,我的ListActivity将不会“听到”通知它查询已完成的消息。请看一看-您可能想探究一下。@Andrew:您找到了相同的解决方案吗?,我也面临着这个问题。试着找出答案。嘿,Nandagopal T。看看我标记为正确答案的答案。这与另一个问题有关。这个问题的答案解决了这个问题。这不是不受欢迎吗?我似乎记得读到过安卓在定向过程中处理了很多事情,如果你忽略了它们,你就会给自己带来问题“应避免使用此属性,并仅作为最后手段使用。有关如何正确处理由于配置更改而重新启动的更多信息,请阅读处理运行时更改。“但在实践中,它工作得很好,我敢肯定很多应用程序都依赖它。任何其他方法都会在方向改变时重新启动web请求,这很难达到用户的预期?我已经实现了这一点,而且它(在emulator上)运行得很好。在发布之前,我必须做一些广泛的设备测试。谢谢。从他们的观点来看,他们更为合理,他们说“但是,您可能会遇到这样的情况,即重新启动应用程序和恢复大量数据可能会花费高昂的成本,并会造成糟糕的用户体验”,他们将此作为一种选择。