我的应用主要是全屏UIWebView。它目前没有实现任何方法来处理暂停/恢复UIWebView内的WebSockets活动。
理论上我的应用程序可以阻止WebView执行所有操作,只需刷新页面即可?我不知道这是不是最好的方法,这就是为什么我在这里。
每当我按下物理主页按钮时,应用程序崩溃,等待一段时间,然后按下应用程序图标并进入应用程序尝试恢复应用程序。该应用程序通常会崩溃并再次恢复到主屏幕。当我再次点击应用程序图标时,应用程序会重新启动,就像设备启动后第一次刚打开一样。
在崩溃期间,我看到调试信息中的内容,如...
线程7 WebThread:EXC_BAD_ACCESS(代码= 1,地址= 0x5)
void std :: _ 1 :: _push_heap_front(WebCore :: TimerHeapIterator, WebCore :: TimerHeapIterator,WebCore :: TimerHeapLessThanFunction&amp ;, 的std :: __ 1个:: iterator_traits :: difference_type) + 194
我不知道该怎么办,我的app app delegate中显然没有设置“applicationDidEnterBackground”或“applicationDidBecomeActive”或任何其他状态,因为我不知道什么是最好的方法以某种方式“暂停“内容”并“恢复”它,甚至如何做到这一点。
答案 0 :(得分:1)
你可以在JS中停止它。
从ObjC,收听应用状态更改事件( UIApplicationWillResignActiveNotification 或 UIApplicationDidEnterBackgroundNotification )。
在回调中,您将调用 stringByEvaluatingJavaScriptFromString 来停止您的websockets。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willResignActive) name:UIApplicationWillResignActiveNotification object:nil];
-(void)willResignActive
{
[m_webView stringByEvaluatingJavaScriptFromString:@"stopWS();"]; // stopWS is implemented in JS
}