【问题标题】:React Native - Timer function is not working if init inside the bridge classReact Native - 如果在桥类中初始化,则计时器功能不起作用
【发布时间】:2015-10-20 09:57:16
【问题描述】:

我正在开发一个使用 React Native 框架开发的 iPhone 应用程序。并且部分功能是使用 Swift 实现的,由原生桥接类调用。

Utilities swift 是桥接类之一,它调用上传队列类。上传队列将每 30 秒触发一次。

Utilities.swift:

@objc func doPostSignInRoutine(username: String, callback: RCTResponseSenderBlock) -> Void {
    UploadXfdfManager.start()
}

上传XfdfManager.swift:

func start() {
   timer = NSTimer.scheduledTimerWithTimeInterval(self.scheduledTimer, target:self, selector: Selector("startUploadQueue"), userInfo: nil, repeats: true)
}

如果我在 Utilities.swift 中调用队列,则不会触发计时器函数“startUploadQueue”,但如果在 Utilities.swift 之外调用队列,它会完美运行。关于如何解决这个问题的任何想法?请指教。非常感谢。

【问题讨论】:

    标签: ios react-native


    【解决方案1】:

    问题是本机模块没有在主线程上运行。这就是为什么计时器在本机桥接类中不起作用的原因。

    使用主线程调用定时器函数可以轻松解决问题

    @objc func doPostSignInRoutine(username: String, callback: RCTResponseSenderBlock) -> Void {
        dispatch_async(dispatch_get_main_queue()) {
          UploadXfdfManager.start()
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-19
      • 2021-05-09
      • 2020-11-29
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多