【发布时间】:2019-07-16 10:58:18
【问题描述】:
我在 10.2.3 上创建了简单的 Android 服务,并将其固定到我的 Android 应用程序中,就像它在文档中一样。但是,在 {$BDS}/lib/android/release 中没有 libProxyAndroidService.so 的地方,我从调试目录中复制了它。 Embarcadero 给我的下一个刺是在调用时挂起整个应用程序
TLocalServiceConnection.StartService('somename');
我已经安装了 10.3.1,希望在这个版本中消除这个错误,但它也做了同样的事情。 在调试模式下运行应用程序,我在 System.Android.ServiceApplication 中放置了一些断点,当通过代码反复执行时,它在 System.InitUnits 中崩溃,第 23357 行:
try
while I < Count do
begin
P := Table^[I].Init;
Inc(I);
InitContext.InitCount := I;
if Assigned(P) and Assigned(Pointer(P^)) then
begin
{$IF defined(MSWINDOWS)}
TProc(P)();
{$ELSEIF (defined(POSIX) and defined(CPUX86)) and defined(ASSEMBLER)}
CallProc(P, InitContext.Module^.GOT);
{$ELSE}
TProc(P)(); << 23357 crashing
{$ENDIF}
end;
执行故障 P 后,UI 线程挂起,Service 从未执行,但在后台 Android App 仍在执行代码(消息日志中的新线程)
编辑: 我检查了P下的内容^ 这是单元 FMX.Platform 的初始化部分
【问题讨论】:
标签: android delphi service freeze