Я попытался реализовать некоторые решения, найденные в «Stack», но ничего, что нашел, не помогло мне. В этом проблема: У меня есть планшет Asus Memopad 8 с 1 ГБ ОЗУ. Он запускает «KitKat». В основном он постоянно имеет около 200 МБ свободной оперативной памяти. Для этого планшета я пытаюсь создать службу, которая будет контролировать текущее запущенное приложение foreground, и в случае, если это конкретное приложение, которое я выбираю, выполните определенные действия. В сущности службы (распространяется IntentService) делает это каждые 2 секунды:Android продолжает убивать мое обслуживание
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
return componentInfo.getPackageName();
Проблема заключается в том, что моя служба получает убит Android в то время как моя таблетка спит. Итак, я начинаю свою службу, она работает нормально. Когда я заканчиваю использовать мой планшет, я его убираю. Через несколько часов я снова использую планшет - сервис ушел. Если я использую свой планшет через несколько минут после того, как его убирают, все еще работает.
Я попытался это:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
return START_REDELIVER_INTENT;
}
Я также попытался с "START_STICKY" без удачи.
Что я должен делать, чтобы запретить Android отключать мой сервис? Я не хочу запускать его как «foregroundService», поскольку это служебная служба, которая должна работать все время, и я не хочу, чтобы моя строка состояния заполнялась постоянным уведомлением. У меня уже есть уведомление, когда служба обнаруживает работу правого переднего плана.
Попробуйте использовать wakelock – Ayaanp