当前位置: 首页 > 知识库问答 >
问题:

WatchKit扩展:如何从主机iOS应用程序读取数据?

洪梓
2023-03-14

问题背景:
主机iOS应用程序以每秒10帧的帧速率动态生成UIImage,我只想从WatchKit扩展中检索UIImage数据,并以相同的速率在Watch应用程序上显示图像。

我当前的解决方案:
我为iOS应用和WatchKit扩展设置了一个应用组。iOS应用程序将每个帧写入一个png文件(约10k)到组共享位置,WatchKit扩展使用NSTimer以相同的速率读取文件,然后将数据发布到Watch应用程序。

问题:
它的工作性能非常差。Watch应用程序错过了帧,因此动画呈现非常糟糕。根本原因可能是WatchKit扩展程序的文件读取操作,或者数据从扩展程序无线传输到Watch应用程序。

有人有类似的要求吗
是否有更好的解决方案:

  1. 从iOS应用程序读取数据到WatchKit扩展
  2. 在手表应用程序上显示动态图像

共有1个答案

高朝明
2023-03-14

您的性能很差,因为运行周期从来都不是完美的,而且同步的调用也没有完全对齐。

解决这个问题的正确方法不是像你一样在运行中生成图像,而是在你需要它们之前生成。

你可以在Xcode中生成这些图像,并将它们包含在你的WatchKit应用程序包中(如果它们是通用的,你会经常使用),你可以在WatchKit应用程序启动时生成它们(如果你知道你需要什么,并且你以后会需要它们),或者你可以在你真正需要它们之前生成它们。

如果选择后两种方法中的一种,最佳做法就像您现在所做的那样,将它们存储在共享应用程序组中(而不是使用openParentApplication:reply:)。但是,在同时访问和写入同一组时,您必须小心。

 类似资料:
  • 我有一个测试WatchKit扩展项目,它调用WKInterfaceController OpenParentApplication:为了获得显示主ios应用程序的信息,然后查询数据库以获取要发送回watch的数据,如下所示。 但是我一回复就会得到一个sigbat,并且我已经将它缩小到一个事实,即我将nsarray赋给一个字典值的值。 我不明白为什么这是违法的,什么是最好的解决办法? 敬克里斯蒂安·

  • 我已将WatchKit应用程序配置为在iPhone 6上运行,WatchKit应用程序方案可执行文件指向WatchKit应用程序。app,Watch界面指向Main,但IOS应用程序并不仅仅启动WatchKit应用程序。 当我选择WatchKit应用程序在苹果6上运行时,苹果6模拟器正在启动,在模拟器返回到IOS级别后,我看到一秒钟的黑屏,但主应用程序没有启动,只有苹果手表模拟器上的WatchKi

  • 问题内容: 在一个项目上,我通过一个类似于控制台的小窗口运行Java应用程序。由于这里有一个很棒的社区,我设法通过从流程输出数据来解决问题,但是由于没有输入流,我运行的命令行应用程序将不断出错。 基于该线程中最后一个有用的答复,我想我将以类似的方式实现该实现,但是在javadocs中以及整个google和互联网中寻找某个类,该类确实没有发现任何解释方法。 因此,我需要一些链接,示例,教程,示例代码

  • 我正在做一个项目,该项目将有许多JavaFX应用程序,这些应用程序具有相似但又足够不同的功能,因此我创建了一个抽象基类来扩展Application以处理常见的功能并指示它们需要做什么,还创建了一系列具体的类来扩展这些功能。然而,当我试图跑的时候,我得到 应用程序构造函数java.lang.Reflect.InvocationTargetException位于java.base/jdk.intern

  • Node.js以单线程模式运行,但它使用事件驱动的范例来处理并发。 它还有助于创建子进程,以便在基于多核CPU的系统上利用并行处理。 子进程总是有三个流child.stdin , child.stdout和child.stderr ,它们可以与父进程的stdio流共享。 Node提供了child_process模块,该模块具有以下三种创建子进程的主要方法。 exec - child_process

  • 我目前正在使用reactNative从我的windows电脑(我唯一的电脑)构建一个移动应用程序。该应用需要在物理设备上测试,而不是在模拟器或模拟器上测试,因为它涉及一个QR扫描器,当我试图在android Studio的android模拟器/模拟器上测试QR扫描器时,它无法连接到我笔记本电脑的摄像头。所有这一切的关键在于,我唯一的物理移动设备是iPhone,React Native需要MacOS