Я пытался уменьшить интервал тревоги до минимально допустимого, поскольку API Android 19 (1 минута), но без изменений.
Это вызывается при нажатии кнопки «Пуск»:
Код: Выделить всё
procedure TMainForm.SetupAlarm();
var
Intent: JIntent;
PendingIntent: JPendingIntent;
begin
try
Intent := TJIntent.Create;
Intent.setClassName(TAndroidHelper.Context, StringToJString('com.embarcadero.services.RemoteService'));
PendingIntent := TJPendingIntent.JavaClass.getService(TAndroidHelper.Context, 0, Intent, TJPendingIntent.JavaClass.FLAG_UPDATE_CURRENT);
TAndroidHelper.AlarmManager.setRepeating(TJAlarmManager.JavaClass.RTC_WAKEUP, 0, getTimeAfterInSecs(120),
PendingIntent);
except
on E: Exception do
Log(E.Message);
end;
end;
function TMainForm.getTimeAfterInSecs(Seconds: Integer): Int64;
var
Calendar: JCalendar;
begin
Calendar := TJCalendar.JavaClass.getInstance;
Calendar.add(TJCalendar.JavaClass.SECOND, Seconds);
Result := Calendar.getTimeInMillis;
end;
end.
Код: Выделить всё
public
function DoStartCommand(const AStartIntent: JIntent; AFlags, AStartID: Integer): Integer; override;
WakeLock: JPowerManager_WakeLock;
procedure AcquireWakeLock;
procedure ReleaseWakeLock;
end;
Код: Выделить всё
procedure TRemoteServiceDM.ReleaseWakeLock;
begin
if Assigned(WakeLock) and WakeLock.isHeld then
WakeLock.release;
end;
procedure TRemoteServiceDM.AcquireWakeLock;
var
PowerManager: JPowerManager;
begin
PowerManager := TJPowerManager.Wrap(
TAndroidHelper.Context.getSystemService(TJContext.JavaClass.POWER_SERVICE));
WakeLock := PowerManager.newWakeLock(TJPowerManager.JavaClass.PARTIAL_WAKE_LOCK, StringToJString('YourWakeLockTag'));
WakeLock.acquire;
end;
function TRemoteServiceDM.DoStartCommand(const AStartIntent: JIntent; AFlags,
AStartID: Integer): Integer;
begin
try
AcquireWakeLock;
try
//test
GetSOAPService().HelloWorld;
except
on E: Exception do
Log(E.Message);
end;
ReleaseWakeLock;
except
on E: Exception do
Log(E.Message);
end;
Result := TJService.JavaClass.START_STICKY;
end;
Тестовым устройством является Android 11, Galaxy A12.
Подробнее здесь: https://stackoverflow.com/questions/787 ... -only-once