【问题标题】:How many queues can transferUserInfo maketransferUserInfo 可以做多少个队列
【发布时间】:2016-08-26 04:17:19
【问题描述】:

我正在使用transferUserInfo 向手表发送统计数据。

当手表处于睡眠或空闲状态(显示时钟),并且手机应用程序正在运行时,会有许多信息被传输(由重复计时器触发)。

应用可以发送多少个“用户信息”队列?有限制吗?

【问题讨论】:

    标签: ios watchos-2 watchos watchconnectivity wcsession


    【解决方案1】:

    只有一个队列(系统提供)。

    我不知道您可以添加到队列中的transferUserInfo 消息的数量有任何限制。

    但是,您应该考虑两件事:

    • 虽然 iOS 将发送消息并能够清空其队列,但那些已发送(尚未处理)的消息将由 watchOS 保留,直到您的应用可以接收它们。在某些时候,手表可能无法为您的应用保存更多消息。

      虽然我不知道 Apple 是如何处理这种情况的,但您应该计划好转移可能会失败,或者更糟的是,被丢弃。

      不要围绕试图绕过特定系统的限制来设计您的应用,因为它会很脆弱并且会损坏,尤其是在您没有应急措施来处理可能出现的情况时。

    • 如果您希望在(短)时间内不断发送(大量)消息,那么这在内存或能源使用方面肯定不会有效。

      您应该关注 Apple 的 performance tips 以创造积极的用户体验。如果事实证明您的应用是导致手机和/或手表电池寿命不佳的原因,用户将停止使用它。

    更好的方法

    这里有一些替代方法可以避免手机和手表之间的闲聊:

    • 使用不同的方法,例如updateApplicationContext,这样手机和手表只需处理一个上下文,而不是必须单独处理的长长的消息队列。

    • 维护手机上的统计信息;避免在手表请求/需要它们之前传输当前统计信息。 (这对于 watchOS 3 来说是一种极好的方法,因为您的应用可以在用户启动之前在后台更新)。

    • 批量处理您的数据,以便随着时间的推移发送更少的更新。

      • 如果您不更新复杂功能,请不要计划每小时更新非活动应用超过一次。
      • 如果您要更新并发症,绝对不要计划每小时更新超过 4 次(但最好每小时不超过一次)。

    同样,不要针对任何特定的数字。一般来说,您更新的频率越低越好。

    无论您选择哪种方法,请确保您的应用是健壮的,并且可以处理任何类型的故障,包括被系统终止(例如内存使用过多或后台 CPU 使用过多)。

    更多信息

    这两个 watchOS 会议专门介绍了更新手表的时间、原因和方式,并提到了围绕特定使用情况安排更新。例如,如果公交没有运行,请不要在整个晚上更新公交信息。

    【讨论】:

      猜你喜欢
      • 2016-03-12
      • 2014-05-24
      • 2014-03-07
      • 1970-01-01
      • 2013-06-30
      • 2011-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多