0

当应用程序进入后台时,谁能告诉我如何注销 UIWebview?

我需要通过UIWebview调用一个js函数比如offline()。

当我用 [mywebview stringByEvaluatingJavaScriptFromString:@"offline()"] 调用此函数时;这种方法不起作用。但是当应用程序进入前台时这是有效的。

我怎样才能让它工作?

4

1 回答 1

0

在应用程序进入后台之前,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;
}
于 2012-11-07T04:23:26.690 回答