Delphi Android Oreo:如何在前台启动服务?

Delphi Android Oreo:如何在前台启动服务?,android,delphi,Android,Delphi,我需要在前台为Android Oreo启动一个服务,但我在Delphi 10.3中找不到一个例子来说明如何在应用程序和服务中这样做 我发现提示我必须在应用程序中使用startForegroundService,在服务中使用startForeground,但我不知道如何以及在何处使用这些呼叫 在应用程序中,我使用 FService:=TLocalServiceConnection.Create; FService.StartService(“MySvc”); 在服务中,我执行以下语句: 函数TD

我需要在前台为Android Oreo启动一个服务,但我在Delphi 10.3中找不到一个例子来说明如何在应用程序和服务中这样做

我发现提示我必须在应用程序中使用startForegroundService,在服务中使用startForeground,但我不知道如何以及在何处使用这些呼叫

在应用程序中,我使用

FService:=TLocalServiceConnection.Create;
FService.StartService(“MySvc”);
在服务中,我执行以下语句:

函数TDM.AndroidServiceStartCommand(const Sender:TObject;const Intent:JIntent;Flags,StartId:Integer):Integer;
开始
结果:=TJService.JavaClass.START\u;
结束;

如何在前台启动和停止服务的示例:

uses
  Androidapi.JNI.Support, Androidapi.Helpers;

procedure TServiceModule.StartForeground;
var
  LBuilder: JNotificationCompat_Builder;
begin
  LBuilder := TJNotificationCompat_Builder.JavaClass.init(TAndroidHelper.Context);
  LBuilder.setAutoCancel(True);
  LBuilder.setContentTitle(StrToJCharSequence('Title'));
  LBuilder.setContentText(StrToJCharSequence('Text'));
  LBuilder.setSmallIcon(TAndroidHelper.Context.getApplicationInfo.icon);
  LBuilder.setTicker(StrToJCharSequence('Caption'));
  // 1413 is just a number picked at random
  TJService.Wrap(System.JavaContext).startForeground(1413, LBuilder.build);
end;

procedure TServiceModule.StopForeground;
begin
  TJService.Wrap(System.JavaContext).stopForeground(True);
end;

谢谢你,戴夫。我应该在哪里打电话给StartForeground?我在我的服务中尝试了不同的地方,但在呼叫StartForeground后,服务和我的应用程序总是挂起不到一秒钟。如何在前台启动我的应用程序?你有这样的例子吗?可以在这里找到更完整的演示:。最重要的是,应用程序和服务可以互相发送“消息”,当应用程序进入后台时,应用程序会通知服务程序,以便服务程序知道如何调用startForeground,反之,当应用程序处于活动状态时,调用stopForeground谢谢你,Dave。在接下来的几天里,我将更仔细地观看演示。