Я работал над приложением, в котором мы должны отслеживать местоположение пользователя каждую минуту, поэтому мы будем поддерживать режим отслеживания в реальном времени на нашем сервере.
Я реализовал то же самое, используя службу Foreground, и она отлично работает с большинством устройств, но для таких устройств, как OPPO и VIVO (в которых служба останавливается через несколько раз).Независимо от того, как сильно я пытаюсь перезапустить службу, используя широковещательный приемник или с помощью диспетчера аварийных сигналов каждые 15 минут, и запускать службу, если она не работает. Но служба продолжает останавливаться и никогда не перезапускается.Ниже приведен код для этого:
public class HomeLocationService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
startForeground(NOTIFICATION_ID, getNotification());
// Method to location request and sending it to server.
return START_STICKY;
}
@Override
public void onDestroy() {
Intent intent = new Intent("com.android.restartservice");
sendBroadcast(intent);
}
@Override
public void onTaskRemoved(Intent rootIntent) {
Intent intent = new Intent(getApplicationContext(), HomeLocationService.class);
PendingIntent pendingIntent = PendingIntent.getService(this, 1, intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
if (alarmManager != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() + 5000, pendingIntent);
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() + 5000, pendingIntent);
}
}
super.onTaskRemoved(rootIntent);
}
}
Интересно, существует ли какой-либо альтернативный способ обновления местоположения на сервере, кроме служб и планировщика заданий (который может работать только с интервалом в 15 минут)?Пожалуйста, помогите мне с вашими ценными предложениями.Заранее спасибо.