Ситуация следующая: есть TextView, текст отличается в зависимости от того, какая дата в системе. Я пытаюсь сделать так, чтобы это изменение происходило динамически.
Пока что нашёл как сделать ежеминутную проверку даты, но это не совсем то. Можно ли сделать Listener, который слушает системную дату всё время, а не посылает запросы через какие-то интервалы? Допустим, открыл окно с TextView в 23:59, через минуту текст поменялся без перезапуска программы или рефреша.
Использование AsyncTask в данном случае плохая практика. Однозначно подобные задачи решаются через BroadcastReceiver. То есть, по наступлении определенного события, система рассылает "сообщения" приложениям. Если в приложении есть BroadcastReceiver, отвечающий за данное сообщение, произойдет необходимое действие.
Примерно так:
а) Добавляем в Android manifest (в application) следующее (у меня был свой пример с переключением режима "В полете", но там же можно посмотреть и другие варианты, например, android.intent.action.DATE_CHANGED, что нам и нужно).
<receiver android:name=".receivers.MyAirplaneReceiver">
<intent-filter>
<action android:name="android.intent.action.AIRPLANE_MODE" />
</intent-filter>
</receiver>
б) Создаем класс, который будет отвечать за данное действие, например:
public class MyAirplaneReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("myLog", "Просто выводим лог!");
}
}
Попробуйте создать AsyncTask - в нем в с нужным интервалом считывать время и уже изменять TextView - динамический.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники