我正在更新我的越狱调整(GIFPaper)并且遇到了一个奇怪的问题。我的调整允许用户将动画 GIF 作为背景图像。由于这会占用多少额外的电池电量,我添加了一个功能,即仅当用户当前正在查看 gif 时才会显示动画。例如,如果用户进入应用程序或关闭屏幕,则 GIF 将暂停。我试图通过键值观察 SpringBoard 背景视图(SBFWallpaperView)的“隐藏”属性来做到这一点。奇怪的问题是,在 observeValueForKeyPath: 方法中,当用户执行任何操作时,我会更新很多次。例如,假设用户在一个应用程序中并且 gif 处于暂停状态。然后用户退出应用程序,SBFWallpaperView 的 hidden 属性从 true 变为 false。而不是 observeValueForKeyPath: 被调用一次,而是被调用了很多次。在这个方法中,我记录了作为 SBFWallpaperView 实例的观察对象的隐藏属性。当用户退出应用程序时,您会期望它会被调用日志“FALSE”,因为用户现在可以看到背景。相反,会记录以下内容: TRUE FALSE TRUE FALSE TRUE FALSE
为什么“隐藏”属性在这么短的时间内发生了如此大的变化,有什么办法可以让它记录一次“FALSE”而不是波动这么大?
谢谢!