android - Delphi RX 中 Android 服务中的 IdHTTP

标签 android delphi service indy idhttp

我尝试编写一个Android服务,它将使用IdHTTP组件向服务器发送消息。 我只是将 IdHTTP1 放在 TAndroidServiceDM 上并尝试在手机上运行应用程序(Android 4.2.2) 我收到错误: “项目 LocSensDemo.apk 引发异常类异常,并显示消息“未找到 Activity ,也许您正在使用服务”” 在 FMX.Platform.Android 第 1792 行“Activity := TAndroidHelper.Activity;” 进而 “项目 LocSensDemo.apk 引发异常类段错误 (11)”。 服务崩溃。

如何解决这个问题?

最佳答案

在服务项目内访问 TAndroidHelper.Activity 属性时,会发生 Activity not find 异常。该属性不可在服务中使用(请参阅 RSP-13381 )。任何在服务中使用 TAndroidHelper.Activity 的内容都会在运行时崩溃。 FMX.Platform.Android 单元中的第 1792 行位于 FMX.Platform.Android.TWindowManager.RetrieveContentRect() 内部。您在使用 TWindowManager 的服务中访问什么?服务没有 UI,您一开始就不应该接触任何与 UI 相关的内容。

如果您的服务代码需要访问 Android Context 对象,例如调用 getContentResolver(),您可以使用 TAndroidHelper.Context > 属性,或者您的服务自己的 JavaService 属性(Android 的 Service 类派生自 Context)。

至于段错误异常,您没有提供有关该错误的任何详细信息,也没有显示导致该错误的代码,因此这里的任何人都无法为您诊断该错误。

关于android - Delphi RX 中 Android 服务中的 IdHTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35133403/

相关文章:

android - canvas.scale(mScaleFactor,mScaleFactor,detector.getFocusX(),detector.getFocusY()) 拖动限制搞砸了吗?

android - 如何确定蓝牙连接是否加密?

Delphi - 以只读方式打开 zip 文件

java - 如何通过知道进程 ID 连接到本地 JMX 服务器?

android - 每 5 分钟间隔一次,通过后台服务将 Lat long 保存在数据库中

java - 动态添加新数据以查看

android - import android.hardware.Camera 确实有 open() 方法

delphi - D2009 TStringlist ansisstring

delphi - 无法在Win7 64位上使用Delphi 2007

android - 重复上传数据到服务器