当我的iOS应用通过执行以下操作拨打电话时:
NSString *telephoneUrl = @"tel:12345678";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:telephoneUrl]];
应用生命周期状态会发生什么?
e.g。如果我将以下行放在上面的电话线下面:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"dispatch callback was called!!!");
});
在iOS 7上,applicationDidEnterBackground
被调用,上面的代码无法运行,当电话终止时,我就在电话应用中。只有当我回到我的应用程序时才会写入控制台行。
但是,在iOS 8上,只调用了applicationWillResignActive
并且应用程序没有进入后台,当我在电话中时,您实际上可以看到正在写入控制台的日志。当通话终止时,我仍然在我的应用程序内。
有人可以确认行为,还是指向相关文档?
答案 0 :(得分:0)
是iOS 7& iOS 8在这里有所不同。我也无法找到相关文件。
因此,在iOS 7中,如果您有来电,则应首先调用applicationWillResignActive:如果您拒绝电话applicationDidEnterBackground将不会被调用;但是如果您接听电话,将调用applicationDidEnterBackground,当您结束电话并且您的应用再次变为活动状态时,也会调用applicationWillEnterForeground :.
但是在iOS 8中,无论您是否接听电话,都会调用applicationWillResignActive: