我尝试使用Android连接到SOAP服务,并在SO和其他网站上阅读有关使用ksoap2的信息。
我也在阅读Android in Action,它表明UI线程中任何长时间运行的代码(> 5秒)都应该在Handler或Service中完成。是否有关于何时使用这些的建议,而不是在Activity中使用它。 SO和Internet上的许多示例都在Activity内部进行SOAP处理(在生命周期方法或事件处理程序中)但在我的情况下,我知道某些SOAP方法需要花费超过5秒的时间。
何时使用Android处理程序或服务的任何指针或建议都会非常有用。
答案 0 :(得分:2)
我建议使用AsyncTask。在这里查找:http://developer.android.com/reference/android/os/AsyncTask.html
基本上,您可以在doInBackground
方法中执行SOAP调用,该方法在后台线程中执行,您可以使用onPostExecute()
方法更新UI,这样就可以避免可怕的ANR( Android Not Responding)错误。
答案 1 :(得分:2)
如果UI依赖于同一时间内的响应,那么我建议您使用AsyncTask
类。 AsyncTask
是为这种长期操作而设计和推荐的。假设服务器的响应与UI密切相关,而不是在长时间操作正在进行时不能保持UI冻结。
您可以在后台线程上运行的doInBackground()
方法中执行这些长事务,必须注意,在此方法中,您无法更新UI,并且在onPostExecute()
/ {{1}使用服务器的响应更新UI。
如果你还没有介绍过,请阅读更多有关AsynTask的内容:
http://developer.android.com/reference/android/os/AsyncTask.html
不要忘记onProgressUpdate()
答案 2 :(得分:0)