最近一個(gè)webView頁面加載一個(gè)VR鏈接之后椅贱,在用友盟進(jìn)行分享后屈芜,偶爾會在分享成功之后回調(diào)到app時(shí)出現(xiàn)閃退情況潮孽。
調(diào)試之后發(fā)現(xiàn):如果h5加載完成之后分享就不會崩潰,沒加載完成就分享就一定崩潰贮匕。
1、錯誤提示:
libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient:
0x19cbfdfa0 <+0>: orr w8, wzr, #0x1
0x19cbfdfa4 <+4>: mov w9, #-0x21530000
0x19cbfdfa8 <+8>: movk w9, #0xbeef
-> 0x19cbfdfac <+12>: str w9, [x8]
0x19cbfdfb0 <+16>: ret
2花枫、錯誤原因:
在分享跳轉(zhuǎn)到微博時(shí)候粗合,我的app進(jìn)入后臺,并且依然在進(jìn)行繪制加載乌昔。
關(guān)于真機(jī)調(diào)試時(shí)按home鍵crash的問題
而蘋果規(guī)定:如果嘗試在后臺執(zhí)行OpenGL ES命令隙疚,應(yīng)用程序?qū)⒈唤K止。
例如:How to fix OpenGL ES application crashes when moving to the background
所以磕道,就app就開始 “崩崩崩崩” 了供屉。
3、解決方法:
通過通知來監(jiān)控app是否進(jìn)入后臺和前臺溺蕉,在進(jìn)入后臺的時(shí)候禁止OpenGL伶丐,在進(jìn)入前臺后重新加載。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
- (void)appWillResignActive:(NSNotification *)notification {
// webView加載個(gè)空
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
// [self.webView stopLoading];
}
- (void)appDidBecomeActive:(NSNotification *)notification {
// 重新加載webView
if (self.url.length > 0) {
NSURL *requestUrl = [NSURL URLWithString:self.url];
NSURLRequest *request = [NSURLRequest requestWithURL:requestUrl];
[self.webView loadRequest:request];
}
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];
}
4疯特、不足之處:
分享回來之后會重新加載h5哗魂,效果并不是很好。
但是漓雅,我能想到的辦法就是這樣了录别,如果有更好的解決方法,請指教~