CountDownTimer onTick не работает в рамках сервиса - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь создать виджет приложения для Android с таймером обратного отсчета. У меня есть служба, которая делает HTTP-запрос, а затем таймер обратного отсчета, который обновляет пользовательский интерфейс виджета приложения (с данными из HTTP-запроса). По какой-то причине таймер обратного отсчета onTick не будет отмечен внутри сервиса. Я не получаю никакой ошибки ..

Вот мой код:

override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {

    val request = Request.Builder()
            .url("URL_TO_CALL")
            .build()

    //Make API call
    client.newCall(request).enqueue(object : Callback {
        override fun onFailure(call: Call, e: IOException) {}
        override fun onResponse(call: Call, response: Response) {

            if (Looper.myLooper() == null) {
                Looper.prepare()
                Looper.loop()
            }


            //Create countdown timer object
            var ctd = object : CountDownTimer(countdownTime, 5000) {

                override fun onTick(millisUntilFinished: Long) {
                    //Nothing in here is being called

                }

            }

            Handler().postDelayed({
                ctd.start()
            }, 500)

        }
})

return Service.START_STICKY

}

1 Ответ

0 голосов
/ 08 июля 2018

Вы положили в WAKE_LOCK?

private PowerManager.WakeLock mWakeLock = null;
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
        mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
        mWakeLock.acquire();

и в онДестрой

if (mWakeLock != null && mWakeLock.isHeld()) {
            mWakeLock.release();
        }

Теперь, если ваше приложение закрывается, когда вы выключаете экран

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...