我使用本地 Android 服务TestService2制作了一些测试应用程序TestPro。在 TestPro 中只有一个按钮启动服务。当我单击按钮时,在设置 -> 应用程序 -> 运行中,我可以看到 1 个进程和 1 个服务。这意味着服务运行正常。之后我打开另一个应用程序,最好的方法是打开浏览器并开始冲浪(TestPro 变为非活动状态)。一段时间后,系统将终止 TestPro。如果我尝试激活程序,它将尝试启动但没有成功。系统询问等待或强制关闭没有响应的应用程序(LogCat 没有得到“Application.Initialize”)。在第二次开始 - 相同。第三次程序正常启动。有任何想法吗?
这是应用程序代码:
program TestPro;
uses
System.StartUpCopy,
FMX.Forms,
Unit1 in 'Unit1.pas' {FrmMain},
Androidapi.Helpers, // TAndroidHelper
AndroidApi.Log, // LOGI
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.ActivityManager in 'Androidapi.JNI.ActivityManager.pas';
var
LIntent: JIntent;
{$R *.res}
begin
LogI('Application.Initialize'); // !!!
Application.Initialize;
Application.CreateForm(TFrmMain, FrmMain);
Application.Run;
end.
在 Unit1.pas 中:
unit Unit1;
...
procedure TFrmMain.StartService();
var
LIntent: JIntent;
begin
LIntent := TJIntent.Create;
LIntent.setClassName(TAndroidHelper.Context.getPackageName(),TAndroidHelper.StringToJString('com.embarcadero.services.TestService2'));
TAndroidHelper.Activity.startService(LIntent);
end;
procedure TFrmMain.Button1Click(Sender: TObject);
begin
StartService();
end;
这是服务中的代码:
function TDM.AndroidServiceStartCommand(const Sender: TObject;
const Intent: JIntent; Flags, StartId: Integer): Integer;
begin
Result := TJService.JavaClass.START_STICKY;
end;
PS。柏林德尔福,SDK 24.3.3