从 Android 服务连接到 DataSnap 服务器

问题描述 投票:0回答:1

我有一个Android应用程序,它在后台运行一个本地服务,需要连接到Datasnap服务器,获取一些数据,并在找到一些数据时通知用户。

一切都是用 Delphi 11.0 编写的,并且一切正常(Datasnap 服务器工作,应用程序连接到它,服务运行,服务定期显示通知),直到我尝试启动一些 Datasnap 服务器功能(它们在应用程序中工作)并编译没有问题),或者只是尝试从服务打开

TSQLConnection
组件(位于服务的
TAndroidService
表单上,由 Android 服务向导生成)。我可以在 IDE 中打开它,但无法从服务中打开它,并且服务在此类调用后停止响应。

有人可以告诉我为什么它不起作用,或者如何调试服务吗?

附注我发现该服务可以在程序处于活动状态时连接到 DataSnap 服务器。但是,如果应用程序关闭,服务(前台)可以执行本地操作,但无法连接到服务器。

android delphi service datasnap delphi-11-alexandria
1个回答
0
投票

当应用程序在后台运行并想要访问 DataSnap 服务器时,Delphi 11.0 中的 Android 服务应用程序的行为似乎存在问题。以下一些步骤可能有助于您诊断和解决问题: 检查权限:确保您的服务具有正确的网络权限。检查您的 AndroidManifest.xml 文件以获得所需的权限,例如 INTERNET 或访问服务器所需的其他特定权限。 服务生命周期管理:了解 Android 上的服务管理方式非常重要,尤其是在涉及长时间运行的操作时。检查您的服务是否正确启动,并且没有因为内存不足而被系统终止。 调试服务:如果要调试服务,可以添加日志输出并通过 ADB logcat 查看或使用附加到正在运行的进程的调试器。这可以帮助您确定代码在什么时候停止响应。 请注意后台限制:现代版本的 Android 严格限制后台活动以提高电池性能。如果您的应用程序进入后台或设备进入睡眠状态,网络操作可能会中断。 网络呼叫管理:确保网络呼叫在后台得到正确管理。您可能需要使用 WorkManager 或 JobScheduler 来确保即使您的应用程序不在前台,您的任务也可以运行。 Datasnap 配置审查:审查与 TSQLConnection 对象相关的所有设置,并确保其中不包含应用程序在后台运行时可能无法满足的条件或配置。 错误处理:在服务代码中实施适当的错误处理机制,以准确确定失败的位置 - 例如连接尝试期间超时或调用服务器函数时出现意外异常。 使用不同状态进行测试:在不同状态下测试您的应用程序:处于活动状态时、刚刚关闭之后以及长时间未使用之后。 检查待机状态下的网络访问:如果您的问题是在设备闲置一段时间然后尝试连接(设备“打瞌睡”模式)时出现的,则可以使用 Firebase 云消息 (FCM) 定期“唤醒”设备。 使用文档和论坛:还可以使用 Embarcadero 文档以及论坛和 Stack Overflow 来解答有关处理用 Delphi 编写的 Android 应用程序中的服务的特定 Delphi 相关问题。

如果这些要点不能解决问题,建议直接请求 Embarcadero 的支持,或者专门在 Stack Overflow 等社区论坛上提供代码示例,经验丰富的 Delphi 开发人员可能有类似的经验并可以提供解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.