Kivy 应用程序需要 30 秒才能打开

Posted

技术标签:

【中文标题】Kivy 应用程序需要 30 秒才能打开【英文标题】:Kivy app takes 30 seconds to open 【发布时间】:2014-10-13 00:01:12 【问题描述】:

iosandroid 设备上打开 Kivy 应用程序大约需要 30 秒(在 Mac OSX 上打开只需 3 秒......在 Windows 上没有尝试过)。 kivy-ios 包用于构建 iOS 应用,buildozer 用于构建 Android 应用。

在 iPhone 上打开应用程序的控制台日志如下。我不知道是什么导致了启动时间缓慢。

Aug 19 13:29:29 My-iPhone kernel[0] <Debug>: launchd[2943] Container: /private/var/mobile/Applications/5CCB9A16-0288-4075-8269-212FD5AB2767 (sandbox)
Aug 19 13:29:29 My-iPhone backboardd[28] <Error>: HID: The 'Passive' connection 'my_app' access to protected services is denied.
Aug 19 13:29:30 My-iPhone my_app[2943] <Warning>: PythonHome is: /var/mobile/Applications/5CCB9A16-0288-4075-8269-212FD5AB2767/my_app.app
Aug 19 13:29:30 My-iPhone my_app[2943] <Warning>: Initializing python
Aug 19 13:29:31 My-iPhone my_app[2943] <Warning>: Running main.pyo: /var/mobile/Applications/5CCB9A16-0288-4075-8269-212FD5AB2767/my_app.app/YourApp/main.pyo
Aug 19 13:29:31 My-iPhone backboardd[28] <Warning>: CoreAnimation: timed out fence 2caa7
Aug 19 13:29:31 My-iPhone SpringBoard[34] <Warning>: CoreAnimation: failed to receive fence reply: 10004003
Aug 19 13:29:31 My-iPhone backboardd[28] <Warning>: CoreAnimation: updates deferred for too long

编辑:该应用在首次启动和后续启动时需要将近 30 秒才能打开。

【问题讨论】:

通常在跨平台工具中构建应用程序时,它会将运行应用程序所需的实用程序与分布式应用程序打包在一起。可能是为了通过 python 运行它,它必须安装/提交到内存中使用所需的所有文件,然后运行应用程序。 我不了解 iOS,但在 Android 上,Python 代码是从一个 zip 文件中提取的 - 任何应用程序的第一次运行都需要比平时更长的时间。每次运行都需要这么长时间还是只是第一次?我的 Android 平板电脑上的一个简单应用需要 3 秒才能启动(第一次运行后)。 【参考方案1】:

正如 Ryan P 在评论中所说,第一次运行需要更长的时间,但应该不需要 30 秒。

通常很重要的一件事是,应用程序不仅会进行一些必要的解包(在第一次运行时)和应用程序初始化(在每次运行时),而且还会运行 main.py 中的代码以及应用程序构建中的任何内容( ) 方法。如果这很重要,则需要一些时间,但在此期间用户将看不到任何内容。你可以通过只从一个最小的 gui 开始并更懒惰地加载其余的来避免这个问题。

您可能还想将自己的性能与其他 kivy 应用(例如 Play 商店中的 kivy 2048)进行对比。我不知道 Mathieu 是否特别为此花了大量时间进行优化,但它至少应该表现得非常合理。如果加载速度比您的快得多,则问题出在您的代码/apk 上。

我们通常建议 kivy 进行初始化的时间不应超过几秒钟(尤其是在第一次运行之后),对于新设备上的应用程序来说通常不到一秒钟。

编辑:我应该澄清一下,以上内容来自我对 Kivy 的 android 工具链的了解。我不知道 ios 的任何细节,尽管它非常相似,你可以期待相似的东西很重要。

【讨论】:

感谢您的跟进。但该应用程序在后续启动时需要大约 30 秒才能启动,而不仅仅是在第一次启动期间。我刚刚编辑了这个信息的问题。 我认为可能是这种情况(第一次运行不会产生太大的影响,除非 apk 很大并且 sdcard 很慢),其余的这才是真正重要的。

以上是关于Kivy 应用程序需要 30 秒才能打开的主要内容,如果未能解决你的问题,请参考以下文章

加快加载动画 gif kivy

如何设置selenium打开网页超过30秒就重新刷新下?

如何设置selenium打开网页超过30秒就重新刷新下?

SQL 查询优化需要 20 - 30 秒才能运行

您可以使用 Kivy Python 应用程序打开文件资源管理器吗?

如何在 kivy 中创建 60 秒倒数计时器