Ваша математика в 32-битных целых числах со знаком, и переполнение.
600 * 60 * 60 * 1000
- это 0x80befc00
, которое является отрицательным целым числом и остается отрицательным при повышении до long. Вызов postDelayed()
с отрицательной задержкой означает «немедленно», что при настройках по умолчанию Handler
означает следующий vsync (каждые 16 мс с частотой обновления 60 Гц).
Чтобы исправить математику, измените один из операндов на long для работы с 64-битными целыми числами, например 600 * 60 * 60 * 1000L
.
В любом случае, Handler#postDelayed()
не очень подходит для таких длительных задач. Рассмотрим, например, WorkManager
вместо.