我正在尝试在应用即将终止/进入后台时进行清理。
但是,当调用以下代码时,
- (void)applicationWillTerminate:(UIApplication *)application
{
NSURL* url = [NSURL URLWithString:@"http://www.mysite.com/mobile/home?sysmethod=proclogout&systype=mobile&pagetype=jquerymobile"];
[self.webView loadRequest:[[NSURLRequest alloc] initWithURL:logoutURL]];
}
...请求开始加载,但永远不会完成。我在Apple文档中读到,一旦applicationWillTerminate:被调用,应用程序有大约5秒的时间来完成他们正在做的事情。
我不相信这个过程会花费很长时间,因为我在应用程序的其他位置加载了相同的请求,并且它总是在几毫秒内完成。
我同步和同时尝试了这个,没有任何运气无论如何。
感谢您的任何想法!
答案 0 :(得分:3)
UIWebView中的请求加载是异步的。这解释了为什么开始加载但从未完成的原因。如果要确保调用或加载某个URL,则必须以某种方式阻止applicationWillTerminate:
方法退出。如果您不需要在Web视图中真正加载请求,则可以改为使用[NSURLConnection sendSynchronousRequest:returningResponse:error:]
。
此外,一种hacky方式可能是这样的:
[_webview stringByEvaluatingJavaScriptFromString:@"window.location.href=\"http://example.com/logout\""];
stringByEvaluatingJavaScriptFromString:
是一种阻塞的同步方法。但是,如果请求完全加载后它真的只返回,我还没试过。它可能在设置位置后就已经返回。