gpt4 book ai didi

palm-os - "Background"Palm OS 中的任务

转载 作者:行者123 更新时间:2023-12-03 22:14:28 27 4
gpt4 key购买 nike

我正在尝试创建一个 Palm OS 应用程序,以每 X 分钟或几小时检查一次网站,并在有数据可用时提供通知。我知道这种事情可以在新的 Palm 上完成——例如,当应用程序不在顶部时,我的 Centro 可以下载电子邮件或网站——但我不知道该怎么做。任何人都可以指出我正确的方向吗?

最佳答案

这是可以做到的,但非常困难。您必须采取几个步骤。

首先,这仅适用于 Palm OS 5,并且在一些早期的 Palm OS 5 设备上是粗略的。最新的设备更好但并不完美。

接下来,您需要使用 AlmSetAlarm 为您的应用程序创建警报。这就是您完成“每 X 分钟或小时”部分的方式。

当警报触发时,您的应用程序将获得一个 sysAppLaunchCmdAlarmTriggered 启动代码,即使它尚未运行。如果你只想做一些简单快捷的事情,你可以响应启动代码来做,就大功告成了。

在闹钟启动代码中完成您的工作后,请务必设置下一个闹钟,以便您继续被调用。

重要说明:响应此启动代码时,您无法访问全局变量!根据编译器中的设置,您可能也无法访问某些 C++ 功能,例如虚拟函数(在内部使用全局变量)。您可以在 Codewarrior 中设置一个有助于解决此问题的设置,但我对它不太熟悉。您应该构建您的代码,使其不需要全局变量;例如,您可以使用 FtrSet 和 FtrGet 来存储您可能需要的全局数据位。最后,您将只能访问 68000 个机器代码的单个 64KB 代码段。如果没有设置全局变量,段间跳转将无法正常工作。

您可以通过将大部分代码移动到 PNOlet 来绕过许多这些限制,但这是一个完全不同且更复杂的主题。

如果您想做一些可能需要一段时间的更复杂的事情(例如加载网页或下载电子邮件),强烈建议不要在警报启动代码期间执行此操作。您可以在 sysAppLaunchCmdDisplayAlarm 启动代码中执行一些操作,并向用户显示一个表单,允许他们取消。但这肯定会很快变得烦人。

更好的用户体验(但要复杂得多)是成为一个后台应用程序。这有点像黑魔法,并没有得到很好的支持,但这是可能的。成为后台应用程序基本上需要三个步骤:

  • 使用 DmDatabaseProtect 保护您的应用程序数据库。这将确保您的应用程序被锁定,因此无法删除。
  • 使用 MemHandleLock 和 MemHandleSetOwner 锁定您的代码段(将所有者设置为 0)。这将确保您的代码被加载到内存中并且不会被移动。
  • 注册一些通知。例如, sysNotifyIdleTimeEvent 是一个很好的通知,用于进行一些周期性的后台处理。

  • 设置完成后,您可以退出警报启动代码,然后等待通知触发。然后,当您的通知处理程序被调用时,您将进行所有后台处理。

    还要确保如果您分配任何系统对象(内存、句柄、文件句柄等),如果您希望它们在您从通知处理程序返回后仍然存在,则将它们的所有者设置为 0(系统)。否则系统将清理它们。如果你这样做,要非常小心,避免内存和资源泄漏!!当所有者设置为 0 时,它们将永远不会被清理!

    要退出后台模式,只需执行相反的操作:取消注册通知、解锁您的代码段并取消保护您的应用程序数据库。

    如果您在后台进行任何网络操作,请确保将套接字设置为非阻塞模式并正确处理!否则,您将阻塞前台应用程序并导致问题。

    关于palm-os - "Background"Palm OS 中的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55350/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com