Сначала позвольте мне прояснить мой проект Deails < /p>
Требование: Мне нужно постоянно отправлять местоположение пользователя на сервер примерно на каждую минуту < /p>
Проблема: Android убивает мою службу примерно через 5 минут бездействия < /p>
Неочередно убивает в чувствах. , но наше приложение все еще не убито.
< /code>
my service: < /p>
< /code>
Как начать службу: < /p>
startService(new Intent(getApplicationContext(), LocationService.class));< /code> < /p>
Как сделать это службу переднего плана:
в моем сервисе Oncreate: Я создаю уведомление и вызовут Startforeforge, чтобы сделать его передовым планом < /p>
код: < /p>
private void generataeNotification() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.1)
.setContentTitle(getString(R.string.s1))
.setContentText(getString(R.string.tracking_location))
.setOngoing(true)
.build();
startForeground(R.id.location_service_notification_id, notification);
} else {
String NOTIFICATION_CHANNEL_ID = "channelId";
String channelName = Constants.APP_NAME;
NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_HIGH);
chan.setLightColor(Color.BLUE);
chan.setSound(null, null);
chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
assert manager != null;
manager.createNotificationChannel(chan);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
Notification notification = notificationBuilder.setOngoing(true).setSmallIcon(R.drawable.d1)
.setContentTitle(getString(R.string.s1))
.setContentText(getString(R.string.tracking_location))
.setOngoing(true)
.setPriority(NotificationManager.IMPORTANCE_HIGH)
.setCategory(Notification.CATEGORY_SERVICE)
.build();
startForeground(2, notification);
}
}
< /code>
и как мне получить местоположение: < /p>
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
mFusedLocationProviderClient.requestLocationUpdates(mLocationRequest, mLocationCallback, null);
< /code>
mLocationRequest , mLocationCallback< /code> - это основные обратные вызовы, которые вы видите в любом коде. Callback
устройство не ходило в спящий режим или режим Doze, так как я активно использую YouTube, нет точки в оптимизации батареи, потому что в последнее время я держал свое устройство в зарядке. Служба на переднем плане и обычное обслуживание на переднем плане, оба останавливаются через 5 минут или около того. Здесь, и любые потенциальные решения. < /p>
Обратите внимание, обратите внимание, что наше устройство не находится в режиме сна или в режиме Doze для использования Wakelocks, OptimaSations, мы действительно держали наше устройство в зарядке при тестировании. /> Но после дневного рабочего менеджера также убит.
Обновление: Служба очень хорошо работала в одном плюс устройстве для 28 часов подряд. Служба переднего плана работает, и уведомление показывает, из регистрации мы обнаружили, что эта проблема сохраняется только in vivo, xiamo и т. Д.>
Подробнее здесь: https://stackoverflow.com/questions/785 ... inactivity
Место обслуживания переднего плана убито Android после 5 минут бездействия ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Исключение Android 14 при запуске службы переднего плана с типами переднего плана
Anonymous » » в форуме Android - 0 Ответы
- 60 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Android 14 - Тип обслуживания переднего плана для FirebasemessAgingService
Anonymous » » в форуме Android - 0 Ответы
- 74 Просмотры
-
Последнее сообщение Anonymous
-