Как добавить таймер сна в мое приложение для Android - PullRequest
0 голосов
/ 22 мая 2019

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

Ответы [ 3 ]

0 голосов
/ 22 мая 2019

Вы можете получить время от пользователя, и после этого вы можете создать один фоновый процесс, который каждый раз считает время и проверяет время пользователя. Если оба совпадут, немедленно закройте приложение

0 голосов
/ 22 мая 2019

Пожалуйста, используйте startTimer (длинные мс), чтобы запустить таймер обратного отсчета и отменить таймер для остановки. И используйте wakelock, чтобы продолжить таймер после выключения экрана.

CountDownTimer cTimer = null;
void startTimer(long time) {
     if(!wakeLock.isHeld()) {
        PowerManager mgr = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
        wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SonaHeartLock");
        wakeLock.acquire();
    }
    cTimer = new CountDownTimer(time, 1000) {
        public void onTick(long millisUntilFinished) {

            timerSync = millisUntilFinished;
        }

        public void onFinish() {

            timerSync = 0;

            System.exit(0);

        }
    };
    cTimer.start();
}


//cancel timer
void cancelTimer() {

    if (cTimer != null) {
        timerSync = 0;
        cTimer.cancel();
        cTimer=null;
        if(wakeLock!=null && wakeLock.isHeld())
            wakeLock.release();
    }

}
0 голосов
/ 22 мая 2019
Thread.sleep(2000);

приостановится на 2 секунды (т.е. 2000 мс). В приложении для Android, которое я написал несколько лет назад, у меня было:

Thread.currentThread().sleep(2000);

но я почти уверен, что .currentThread() не был нужен. В то время я только учил Java.

См. Документ Oracle .

Более подробно, что у меня на самом деле было отдельной задачей:

class TimerUpdater extends AsyncTask<String, String, Void>{
  }

Это периодически проверяло время (пауза с использованием Thread.sleep()) и отображало обратный отсчет, и в ноль устанавливал флаг, что основная задача периодически проверяла и заканчивала игру, когда она видела, что она была установлена.

Мое приложение было ужасным кодом, но я изучал и Java, и Android одновременно, так быстро, как мог, чтобы создать приложение, которое помогло бы моему ребенку на уроке математики.

С тех пор Android сильно изменился.

...