当应用程序进入后台时,谁能告诉我如何注销 UIWebview?
我需要通过UIWebview调用一个js函数比如offline()。
当我用 [mywebview stringByEvaluatingJavaScriptFromString:@"offline()"] 调用此函数时;这种方法不起作用。但是当应用程序进入前台时这是有效的。
我怎样才能让它工作?
当应用程序进入后台时,谁能告诉我如何注销 UIWebview?
我需要通过UIWebview调用一个js函数比如offline()。
当我用 [mywebview stringByEvaluatingJavaScriptFromString:@"offline()"] 调用此函数时;这种方法不起作用。但是当应用程序进入前台时这是有效的。
我怎样才能让它工作?
在应用程序进入后台之前,javascript 可能没有及时执行。您可以通过在 appdelegate 的 applicationWillResignActive 方法中运行 backgroundTask 来请求更多时间:
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid){
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
});
}];
还要确保在您知道您的 javascript 完成后结束后台任务(因为它的 javascript 在 webview 中,唯一的方法可能是在 N 秒后调用它):
// After N sections execute this:
if (bgTask != UIBackgroundTaskInvalid) {
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}