替代前台服务以连续更新位置

时间:2019-02-06 10:47:33

标签: android location android-service

我一直在开发一个应用程序,在该应用程序中,我们必须每分钟都必须跟踪用户位置,因此我们将保持服务器启用实时跟踪模式。

我已经使用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分钟的间隔内运行)之外,是否还有其他方法可以更新服务器的位置?请给我您的宝贵建议。预先感谢。

0 个答案:

没有答案