【问题标题】:Stop app from refreshing when going into background. (iOS)进入后台时停止应用程序刷新。 (iOS)
【发布时间】:2021-07-30 00:56:55
【问题描述】:

当前在我的 WKWebView 应用程序中,如果我按下主页按钮然后返回应用程序,它会重新启动我的应用程序。我在 updateUiView 中放了一条打印语句,它似乎一旦进入后台就会刷新它。我认为这是因为所谓的后台应用刷新。但在“后台模式”中,后台获取未勾选。所以,我想我的问题是,当应用切换到后台时,如何阻止应用刷新?

其他应用没有相同的行为,所以它一定是可能的。

仅供参考:我正在使用 SwiftUi 应用程序生命周期。

编辑:

这是我的updateUiView:

func updateUIView(_ uiView: WKWebView, context: Context) {
    if (uiView.canGoBack) {
        uiView.goBack()
    }
    uiView.navigationDelegate = context.coordinator
    
    ....

    guard let urlStr = URL("https://www.example.com") else {
        return
    }
    uiView.load(URLRequest(url: urlStr))  
}

【问题讨论】:

  • 你在updateUiView做什么?如果您正在重新加载页面,您可以将重新加载移动到makeUIView吗?
  • 这与后台获取无关 - 这是您需要编写代码才能使用的特定后台服务。
  • @user1046037 在 updateUiView 中,我主要只是像这样加载网址:uiView.load(URLRequest(url: urlStr))
  • 不确定,最好注释掉除绝对必要的行之外的所有行。记录打印语句以查看是否再次调用 makeUIView。如果是这样,视图将被重新创建,那么问题可能在于它为什么被重新创建
  • 另外,如果您将评论作为答案发表,我会很乐意接受:)

标签: ios swift swiftui


【解决方案1】:

makeUIView 被调用来创建视图。 多次调用updateUIView 更新视图

所以你想做的任何事情都只做一次,在makeUIView做吧

将代码从 updateUIView 移动到 makeUIView 并检查是否按预期工作。

【讨论】:

    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多