applicationState 是 UIApplicationStateInactive 在 application:didReceiveRemoteNotification:fetchComple
Posted
技术标签:
【中文标题】applicationState 是 UIApplicationStateInactive 在 application:didReceiveRemoteNotification:fetchCompletionHandler:【英文标题】:applicationState is UIApplicationStateInactive in application:didReceiveRemoteNotification:fetchCompletionHandler: 【发布时间】:2015-06-24 20:11:21 【问题描述】:当推送通知到达时,它会在后台播放音频,使用 application:didReceiveRemoteNotification:fetchCompletionHandler:。
要开始,我先按主页按钮,然后按锁定屏幕按钮,然后屏幕关闭,然后发送推送通知。当应用程序状态为 UIApplicationStateBackground 并且我通过将其记录到文件来查看状态时,此方法有效。然而,有时当应用程序在后台运行时,它会在 application:didReceiveRemoteNotification:fetchCompletionHandler: 之前神秘地进入前台,并且应用程序状态在 application:didReceiveRemoteNotification:fetchCompletionHandler: 中为 UIApplicationStateInactive。这是日志:
AppDelegate applicationDidEnterBackground: called
AppDelegate applicationWillEnterForeground: called
AppDelegate application:didReceiveRemoteNotification:fetchCompletionHandler: called. currentThread 0x174261900 isMainThread 1
AppDelegate application:didReceiveRemoteNotification:fetchCompletionHandler: applicationState == UIApplicationStateInactive
在应用程序中的某些手机上:didReceiveRemoteNotification:fetchCompletionHandler:它始终显示 UIApplicationStateBackground,而在其他手机上它是 UIApplicationStateInactive。知道为什么会这样吗?
【问题讨论】:
【参考方案1】:在现代操作系统中,后台进程要么被“暂停”,因此它们可以更快地被拉起(状态为UIApplicationStateBackground
),或者它们的内存被释放以将内存分配给更前端的进程。在这种情况下,它将成为您的UIApplicationStateInactive
。当您的设备有一个紧张的进程并需要 RAM 时,就会发生这种情况。
【讨论】:
在 ios 中,当点击主页按钮时,打开的应用程序会从 UIApplicationStateActive 转换到 UIApplicationStateInactive 再到 UIApplicationStateBackground。我正在尝试确定它不会进入后台状态的原因。以上是关于applicationState 是 UIApplicationStateInactive 在 application:didReceiveRemoteNotification:fetchComple的主要内容,如果未能解决你的问题,请参考以下文章
什么是 FNFPlayer?它从后台线程访问 UIApplication applicationState