“applicationDidBecomeActive”之后调用什么方法?

2023-12-05

这是我的第一个问题,因为我在开发第一个 iOS 应用程序时遇到问题。它是数千个手电筒应用程序之一,但我正在尝试为其添加尽可能多的功能。其中之一是在应用程序进入后台或终止时保存应用程序的状态。进入前台(iOS 4 或更高版本)或重新启动后,我将从文件加载设置并重新应用它们。显然,其中一项设置是AVCaptureDevice.torchMode。但是,我遇到了这个问题。我正在重新应用这些设置applicationDidBecomeActive方法。这一切似乎都有效,但是当我快速点击主页按钮然后重新启动应用程序时,该应用程序将执行以下操作(我延迟了applicationDidBecomeActive观察方法):

1.显示黑屏(加载中)
2. 执行applicationDidBecomeActive然后打开 LED(我把延迟放在这里)
3.显示我当前的UIViewController同时关闭 LED

只有在应用程序发送到后台后立即从后台调用应用程序后,才会发生这种情况。我知道这不是现实的用例场景,但我喜欢认为错误经常“堆积”,并且由于这种(可能)糟糕的设计,我将来可能会遇到其他问题。我绝对确定这不是我关闭 LED 的代码,因为我NSLog每当我的代码修改AVCaptureDevice.torchMode财产。所以,准确地说,我的问题是:
之后调用什么方法applicationDidBecomeActive,可能与UIViewController,这可以关闭我的手电筒吗?有没有可能的解决方案或解决方法?


根据iOS应用程序编程指南:

返回前台是您的应用程序重新启动任务的机会 当它移动到背景时它就停止了。发生的步骤 移动到前台时如图3-6所示。这 applicationWillEnterForeground:方法应该撤消任何内容 在你的 applicationDidEnterBackground: 方法中完成,并且这 applicationDidBecomeActive:方法应继续执行相同的操作 启动时的激活任务.

您是否尝试过重新应用您的设置applicationDidBecomeActive:方法而不是applicationWillEnterForeground: ?

另一件需要考虑的事情是使用通知:

In the applicationDidBecomeActive: or applicationDidBecomeActive:AppDelegate 的方法,您可以告诉您的应用程序委托向您的控制器发送通知:

- (void)applicationDidBecomeActive:(UIApplication *)application {
    /*
     Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
     */

    // Dispatch notification to controllers
    [[NSNotificationCenter defaultCenter] postNotificationName: @"didBecomeActive" 
                                                        object: nil 
                                                      userInfo: nil];
}

一旦你有了这个,视图控制器就可以注册这些通知(例如在它们的 init 方法中),如下所示:

[[NSNotificationCenter defaultCenter] addObserver: self 
                                                 selector: @selector(loadSettings) 
                                                     name: @"didBecomeActive" 
                                                   object: nil];

这样,您的控制器就会知道该应用程序刚刚变为活动状态,并且可以执行您想要的任何方法。

在此示例中,您告诉视图控制器执行loadSettings方法,当它接收到didBecomeActive通知(由应用程序委托发布)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“applicationDidBecomeActive”之后调用什么方法? 的相关文章

随机推荐

  • Javascript 全局变量的生命周期

    我是Javascript初学者 当我学习 Javascript 全局变量生命周期时 它说 全局变量的生命周期从声明时开始 并且 当页面关闭时结束 我读到Javascript会将全局变量存储到window对象中 而它什么时候会被摧毁呢 关闭网
  • 突出显示 ListView 选定的行

    我有一张专辑列表 几百张 当我触摸所选专辑时 我想为用户提供播放整个专辑或移至其曲目 ListView 的选择 没问题 但是 在触摸 albumListView 中的专辑后 我希望该行保持突出显示 以便用户知道他们单击了哪个项目 然后可以移
  • 如何避免饼图中标签和 autopct 重叠

    我的Python代码是 values 234 64 54 10 0 1 0 9 2 1 7 7 months Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec colors yellowgree
  • 使用 keras Convolutional1D Layer 时出现负维度错误

    我正在尝试使用 Keras 创建一个 char cnn 那种类型的 cnn 需要你使用Convolutional1D层 但是我尝试将它们添加到模型中的所有方法 都会在创建阶段给我带来错误 这是我的代码 def char cnn n voca
  • 有没有办法使用 jquery 或 javascript 检测用户是否按下了刷新按钮?

    我想知道 jquery 或 javascript 是否可以检测用户是否按下了浏览器的刷新按钮 如果可以的话我可以看一个例子吗 无法检测用户在页面刷新之前是否按下了刷新 但您可以使用 cookie 来确定页面在第二次加载后是否刷新 例如 每个
  • 在 Objective-C 中如何确定我的方法的“调用者”? [复制]

    这个问题在这里已经有答案了 所以我有一个相当复杂的应用程序 我可能天真地同意 调试 在进入某个方法后 我想打印出尽可能多的信息 包括谁调用了该方法 从哪个类 方法等调用了该方法 任何建议将非常感激 只需添加您的方法 NSLog Show s
  • 为什么边缘消失速度很慢?

    如中所述这个答案 边缘淡入ScrollView可能会很慢 我想知道 为什么 使用褪色边缘可能会导致明显的性能下降 并且仅应在应用程序的视觉需要时使用 设计 要请求 API 级别 14 及以上的淡入淡出边缘 请使用android requir
  • jQuery - 单击时如何将锚点滚动到页面顶部?

    我有一个链接列表divelements 我正在使用 dropcontent js 将内容加载到另一个元素中div单击链接时 我现在想添加一些代码 将单击的链接滚动到浏览器窗口的顶部 列表中每个项目的 HTML 如下所示 div class
  • 二维数组的分段错误

    有一个奇怪的分段错误错误 下面的代码运行良好 include
  • 在 ASP.NET MVC 中启用会话状态

    我想在 ASP NET MVC 应用程序中使用会话变量 我已经添加了
  • 如何限制 Sitecore 语言仅写入内容树的某些部分

    在我们的 Sitecore 实施中 我们有分支编辑器 他们需要英语及其母语 例如德语 的语言写入权限 但是 我们的内容树的某些部分不应由这些分支编辑器编辑英文版本 但母语版本可以 举一个具体的例子 如果我们有一个产品页面 其中包含一些全局信
  • JAVA_HOME指向错误的地方

    我似乎有一个错误指定的 JAVA HOME 变量 我可以解决很多事情 但现在我似乎陷入困境 我正在尝试使用 Google App Engine 并上传应用程序 当我这样做时 我收到错误 找不到基于java home的javac可执行文件 尝
  • 不缓存从 glassfish 安全页面引用的静态资源

    我正在使用 JSF 1 2 和 glassfish 声明性安全性以及 j security check 我的 xhtml 页面位于安全页面文件夹 我通过将 Web 资源约束设置为安全约束来保护其中的所有资源 secure pages 我的
  • Android Studio 内联编译器显示红色错误,但使用 gradle 编译工作正常

    我已经在 Android Studio 中设置了我的项目以使用方线库 按照这个问题 Build gt Compile Project工作正常 2 03 10 PM Compilation completed successfully in
  • node-gyp 重建 - 错误:`gyp` 失败,退出代码:1

    我在 CentOS 6 8 上进行 node gyp 重建时遇到错误 File usr local lib node modules node gyp gyp pylib gyp input py line 295 in LoadBuild
  • RestSharp 压缩请求,同时对服务器进行休息调用

    我正在我的 C 客户端中使用用 java 编写的 REST API 我将大量数据传输到服务器 并且使用 RestSharp dll 来进行休息调用 我要做的是构造一个对象并将其直接添加到 RestSharp 请求对象的主体中 并为其提及 n
  • URL 屏蔽不适用于省略尾部斜杠的 URL

    类似的问题还有很多 但似乎没有一个完全适合我 我正在从 WordPress 网站迁移到简单的静态网站 但是 我目前被禁止删除托管在public html完全文件夹 直到证明所有内容都可以在静态站点上使用 我已将静态站点部署到我的子子文件夹中
  • JavaScript 仅接受 0 到 255 范围内的数字

    我的要求是验证 IP 范围 我需要创建一个 JavaScript 函数来仅接受数字 并且它必须只允许在 0 到 255 范围内 如果输入的任何内容超出该范围 它必须发出警报消息 我目前正在使用以下功能
  • 确定路径是否作为 Rails 控制器中的路由存在

    我想知道是否可以将任意路径映射到路线 recognize request for 完成了我想要的 但我无法让它在我的控制器中工作 具体来说 我怎样才能执行认可的请求或者从我的控制器完成相同任务的东西 对于 Rails 3 调用是 Rails
  • “applicationDidBecomeActive”之后调用什么方法?

    这是我的第一个问题 因为我在开发第一个 iOS 应用程序时遇到问题 它是数千个手电筒应用程序之一 但我正在尝试为其添加尽可能多的功能 其中之一是在应用程序进入后台或终止时保存应用程序的状态 进入前台 iOS 4 或更高版本 或重新启动后 我