Вызов API каждые 60 * 1000 миллисекунд - PullRequest
0 голосов
/ 27 декабря 2018

Я работаю над кодом, в котором мне нужно вызывать API для каждых 60 * 1000 миллисекунд, как на переднем плане, так и на заднем плане, независимо от активности / фрагмента.

Я пытался использовать обработчик и другие решения, такие как jobпланировщик и т. д. Когда устройство подключено к источнику питания или на экране устройства просыпается, мое решение работает нормально, но когда устройство заблокировано, оно не работает идеально.В настоящее время я использую приведенную ниже логику в классе приложения

Handler minuteHandler = new Handler();
minuteHandler.postDelayed(runnable, 60*1000);
final Runnable runnable = new Runnable() {
    @Override
    public void run() {
        // method to call api
        minuteHandler.removeCallbacks(runnable);
        minuteHandler.postDelayed(runnable, 60*1000);
    }
};

Решение простое, так как мне нужно вызывать API каждые 60 * 1000 миллисекунд без задержки в миллисекундах в течение до 8-10 часов непрерывно до приложенияуничтожается.

1 Ответ

0 голосов
/ 27 декабря 2018

Один из вариантов - использовать wake lock .Вот пример из документации:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();

// screen and CPU will stay awake during this section
wl.release();

Это предотвращает блокировку экрана

Или вы можете использовать android:keepScreenOn для Activity в AndroidManifestИсточник: https://stackoverflow.com/a/3723649/9819031

...