Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Servicio en android. (https://www.clubdelphi.com/foros/showthread.php?t=90385)

voci 28-05-2016 18:50:26

Servicio en android.
 
He Creado un sencillo servicio para que lance una notificación cada 2 minutos, el servicio funciona perfectamente, lanza las notificaciones como debe hacer, el problema es que cuando cierro la aplicación, aunque android indica que el servicio sigue funcionando, ya no lanza las notificaciones hasta que vuelvo a abrir la aplicación.

¿Es así como funcionan los servicos de android?, ¿hay algo que se me escapa?.

Saludos.

Neftali [Germán.Estévez] 30-05-2016 10:03:01

Hay varios tipos de servicios que puedes definir. El componrtamiento puede variar según el tipo. Revisa que hayas creado el que se ajusta a tus necesidades.

Más info.

voci 30-05-2016 21:00:17

Gracias Neftali por contestar una vez más, siempre al pie del cañón.

A raíz de tu respuesta he estado mirando y he visto esto por internet "Android services allow for execution even when app is not running", pero con mi limitado inglés no veo claro como conseguirlo

Supongo que te refieres a crear un servicio remoto, voy a ver si consigo entender algo ya que todo lo que veo sobre este tema está en inglés, y como digo no es precisamente mi fuerte.

Saludos.

voci 30-05-2016 21:45:50

Esto dice la documentación de Embarcadero:

Starting a Service

Services can be started with ALocalServiceConnection.StartService('<service_name>') and ALocalServiceConnection.BindService('<service_name>'), or ARemoteServiceConnection.StartService('<service_name>') and ARemoteServiceConnection.BindService('<service_name>').

Pero RemoteServiceConnection no tiene el procedimiento StartService, yo al menos no lo veo.

Saludos.

Neftali [Germán.Estévez] 30-05-2016 22:43:52

Revisa esta pagina que explica algo mas:

http://docwiki.embarcadero.com/RADSt...droid_Services

Sobre todo la parte que habla de "started service".

A started service: This service is started by an Android application. The service can run in the background indefinitely, even if the application is closed. This type of service usually performs a single task and automatically stops after finishing.

voci 31-05-2016 00:05:56

Gracias de nuevo Neftali, ya he estado leyendo la información de embarcadero, este es el sencillo código que utilizo para iniciar el servicio en modo local:

Código Delphi [-]
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

uses
  System.Android.Service;


procedure TForm1.FormCreate(Sender: TObject);
begin
  TLocalServiceConnection.StartService('MiServicio');
end;



end.


El problema que encuentro es que entiendo que para iniciar el servicio en modo remoto solo sería cambiar la secuencia de modo de inicio.

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  TRemoteServiceConnection.StartService('MiServicio');
end;

Pero TRemoteServiceConnection no encuentra el procedimiento StartService.

Saludos.

Neftali [Germán.Estévez] 31-05-2016 09:54:23

Parece que también hay diferencias en el fichero Manifest de Android:

Código:

<service android:exported="true" android:name="com.embarcadero.services.<service_name>"/>
En lo que se refiere a la parte exported.

voci 31-05-2016 12:26:35

Es cierto, lo había leido pero no había pensado en ello. Lo miraré y ya te cuento.

Saludos.

voci 03-06-2016 16:42:45

Al final he conseguido ejecutar el servicio de forma independiente a la aplicación, el servicio se denomina intentlocalservice, viene muy bien explicado en el ejemplo de embarcadero llamado DownloadServiceDemo.

Saludos.


La franja horaria es GMT +2. Ahora son las 02:23:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi