Создание приложения, которое запускается при выключенном экране

Я пытаюсь создать фитнес-приложение, которое будет отслеживать шаги, которые я делаю. Ive было тестирование в течение почти 7 дней, и я действительно изо всех сил, чтобы достичь этого.

До сих пор мне удалось создать код, который запускается, когда экран включен, но он перестанет работать после того, как экран выключен через 1-3 минуты. Мой код просто сохраняет слово каждые 1 мин, или 10 секунд, или 1 сек, я протестировал со всеми 3 конфигурациями.

Я попытался использовать следующее:

  • AlartManager (все сигналы тревоги разницы)
  • WakefulBroadcastReceiver
  • Broadcastreceiver
  • Сервис (StartForeground)
  • Wake Locks
  • Чтобы добавить мое приложение в белый список, чтобы «режим дремоты» на устройстве Samsung не intefear.
  • Чтобы полностью удалить приложение из оптимизации батареи

Я получил более 10 различных примеров на моем компьютере, все они преформы, как описано. Поэтому я попробую другой подход и задам простой прямой вопрос.

Испытательное устройство

HTC M8 one Android v6.0.1

Samsung Galaxy S6 edge Android v6.0.1

Вопрос

Все, что я хочу, это код, который может работать, когда экран черный, также после 30 минут и больше. Не просто 1-3 минуты. Это кажется более сложным, чем балансировка на 1 пальце 🙂

Может ли кто-нибудь помочь мне с некоторым кодом, чтобы я мог пойти в правильном направлении?

Извините за то, что не опубликовал реальный код в этом вопросе, я чувствовал, что это было неуместно, так как я пробовал так много вещей, что этот пост будет 67 свитков долго 🙂

Предыдущие вопросы

Если вы хотите увидеть некоторые из кода, который я создал раньше, чтобы acvieve то, что я хочу здесь, это сообщение.
Android OS выключает Wakelock + AlarmManager через несколько минут

2 ответа

  1. Вы можете делать такие вещи с исполнителем, как это:

        scheduler = Executors.newSingleThreadScheduledExecutor();
    
        scheduler.scheduleAtFixedRate
                (new Runnable() {
                    public void run() {
                       // your stuff goes here
                    }
                }, 0, 10, TimeUnit.SECONDS);
    
  2. У меня есть что-то похожее, мой подход состоит в том, чтобы справиться с этим по службе или намерению службы. Сама служба планирует AlarmManager на следующий раз, когда она должна выполнить, поэтому всякий раз, когда служба запущена, намерение обрабатывается, и в конце сигнал тревоги устанавливается только на следующий раз, когда он должен сделать свою вещь снова.

    Gotcha является то, что Android не нравится этот подход слишком много, если это повторяющийся сигнал тревоги или если графики слишком коротки между собой. Он работает нормально, если у вас есть что-то, что работает каждые 15 минут или около того.